Rqlite 1.0.0-beta.23071402

This is a prerelease version of Rqlite.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Rqlite --version 1.0.0-beta.23071402                
NuGet\Install-Package Rqlite -Version 1.0.0-beta.23071402                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Rqlite" Version="1.0.0-beta.23071402" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Rqlite --version 1.0.0-beta.23071402                
#r "nuget: Rqlite, 1.0.0-beta.23071402"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Rqlite as a Cake Addin
#addin nuget:?package=Rqlite&version=1.0.0-beta.23071402&prerelease

// Install Rqlite as a Cake Tool
#tool nuget:?package=Rqlite&version=1.0.0-beta.23071402&prerelease                

Rqlite .NET Client

GitHub release (latest SemVer including pre-releases) Nuget GitHub

Test Publish

Simple .NET client for Rqlite, with deserialisation support.

Features

  • Configure multiple connections in settings
  • Execute (e.g. INSERT) and Query support
  • Return query results as rows or map to objects
  • Use parameters for Execute and Query
  • Support for transactions and multiple statements

Getting Started

The simplest way to start testing is to use Docker:

docker run -p4001:4001 rqlite/rqlite

Install the NuGet package. You can see a functioning example of the code below in the ReadmeApp project of this repository.

// register Rqlite with dependency injection in your host startup
// (currently supports Microsoft.Extensions.DependencyInjection)
services.AddRqlite();

// add IRqliteClientFactory to a class constructor, or use IServiceProvider
var factory = provider.GetRequiredService<IRqliteClientFactory>();

// creates default IRqliteClient, listening on http://localhost:4001
using var client = factory.CreateClient();

// create a table
await client.ExecuteAsync("DROP TABLE IF EXISTS foo");
await client.ExecuteAsync("CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT, age INTEGER)");

// 0: insert a row using parameters
var sql0 = "INSERT INTO foo(name, age) VALUES(:name, :age)";
var param0 = new { name = "Fred", age = 42 };
var query0 = await client.ExecuteAsync(sql0, param0);
Console.WriteLine("Inserted record {0}.", query0.Results.Select(r => r.LastInsertId).First());
// Output: 'Inserted record 1.'

// 1: query the database using parameters
var sql1 = "SELECT * FROM foo WHERE name = :name";
var param1 = new { name = "Fred" };
var query1 = await client.QueryAsync(sql1, param1);
Console.WriteLine("Fred is {0}.", query1.Results[0].Values![0][2].GetInt32());
// Output: 'Fred is 42.'

// 2: get value as a simple type
// For scalar queries, Flatten() removes additional info from the result (including errors!)
// and returns the first value as the specified type
var sql2 = "SELECT age FROM foo WHERE name = :name";
var query2 = await client.ScalarAsync<int>(sql2, param1).Flatten();
Console.WriteLine("Fred is {0}.", query2);
// Output: 'Fred is 42.'

// 3: map results to a complex type
// For mapped queries, Flatten() removes additional info from the result (including errors!)
// and returns all the matching rows as objects of the specified type
var query3 = await client.QueryAsync<Person>(sql1, param1).Flatten();
Console.WriteLine("Found {0}.", query3.First());
// Output: 'Found Person { Id = 1, Name = Fred, Age = 42 }.'

// 4: insert multiple rows at once using tuples
var param2 = new { name = "Bella", age = 31 };
var param3 = new { name = "Alex", age = 59 };
var query4 = await client.ExecuteAsync(
    (sql0, param2),
    (sql0, param3)
);
Console.WriteLine("Inserted records {0}.", string.Join(", ", query4.Results.Select(r => r.LastInsertId)));
// Output: 'Inserted records 2, 3.'

internal sealed record Person(int Id, string Name, int Age);
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0-beta.24111501 38 11/15/2024
1.0.0-beta.24101801 71 10/18/2024
1.0.0-beta.24073001 52 7/30/2024
1.0.0-beta.24060601 108 6/6/2024
1.0.0-beta.24042401 69 4/24/2024
1.0.0-beta.24040501 68 4/6/2024
1.0.0-beta.24032302 57 3/23/2024
1.0.0-beta.23092301 84 9/23/2023
1.0.0-beta.23071402 92 7/14/2023
1.0.0-beta.23071401 86 7/14/2023
1.0.0-beta.23070801 91 7/8/2023