CSharpDB.Data
1.7.0
Prefix Reserved
dotnet add package CSharpDB.Data --version 1.7.0
NuGet\Install-Package CSharpDB.Data -Version 1.7.0
<PackageReference Include="CSharpDB.Data" Version="1.7.0" />
<PackageVersion Include="CSharpDB.Data" Version="1.7.0" />
<PackageReference Include="CSharpDB.Data" />
paket add CSharpDB.Data --version 1.7.0
#r "nuget: CSharpDB.Data, 1.7.0"
#:package CSharpDB.Data@1.7.0
#addin nuget:?package=CSharpDB.Data&version=1.7.0
#tool nuget:?package=CSharpDB.Data&version=1.7.0
CSharpDB.Data
ADO.NET provider for the CSharpDB embedded database engine. Standard DbConnection, DbCommand, and DbDataReader with parameterized queries and transactions.
Overview
CSharpDB.Data provides a standard System.Data.Common (ADO.NET) data provider for CSharpDB. Use familiar DbConnection/DbCommand/DbDataReader patterns to query and modify your embedded database. Supports parameterized queries, transactions, prepared statements, prepared-template caching, schema introspection, and both file-backed and in-memory connection modes.
Key Types
| Type | Description |
|---|---|
CSharpDbConnection |
DbConnection for file-backed databases, private :memory: databases, and named shared :memory:name databases |
CSharpDbCommand |
DbCommand with prepared statement support, template caching, and parameter binding |
CSharpDbDataReader |
DbDataReader with async iteration, typed getters, and HasRows |
CSharpDbTransaction |
DbTransaction with auto-rollback on dispose |
CSharpDbFactory |
Singleton DbProviderFactory for creating connections and commands |
CSharpDbParameter |
Parameter support with AddWithValue convenience method |
Usage
using CSharpDB.Data;
// Open a connection
await using var connection = new CSharpDbConnection("Data Source=myapp.db");
await connection.OpenAsync();
// Create a table
await using var cmd = connection.CreateCommand();
cmd.CommandText = """
CREATE TABLE products (
id INTEGER PRIMARY KEY,
name TEXT,
price REAL
)
""";
await cmd.ExecuteNonQueryAsync();
// Insert with parameters
cmd.CommandText = "INSERT INTO products VALUES (@id, @name, @price)";
cmd.Parameters.AddWithValue("@id", 1);
cmd.Parameters.AddWithValue("@name", "Widget");
cmd.Parameters.AddWithValue("@price", 9.99);
await cmd.ExecuteNonQueryAsync();
// Query with a data reader
cmd.CommandText = "SELECT name, price FROM products WHERE price < @max";
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@max", 50.0);
await using var reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
Console.WriteLine($"{reader.GetString(0)}: ${reader.GetDouble(1):F2}");
}
// Transactions
await using var tx = await connection.BeginTransactionAsync();
cmd.Transaction = (CSharpDbTransaction)tx;
cmd.CommandText = "INSERT INTO products VALUES (2, 'Gadget', 19.99)";
await cmd.ExecuteNonQueryAsync();
await tx.CommitAsync();
// Save an in-memory connection back to disk
await connection.SaveToFileAsync("products.db");
// Schema introspection
var csConn = (CSharpDbConnection)connection;
var tables = csConn.GetTableNames();
var schema = csConn.GetTableSchema("products");
Using DbProviderFactory
var factory = CSharpDbFactory.Instance;
await using var conn = factory.CreateConnection();
conn.ConnectionString = "Data Source=myapp.db";
await conn.OpenAsync();
In-Memory Connection Strings
Data Source=:memory:
Creates a private in-memory database scoped to a single connection.
Data Source=:memory:shared-cache
Creates or attaches to a named shared in-memory database within the current process.
Data Source=:memory:shared-cache;Load From=seed.db
Seeds an in-memory database from seed.db on first open. For named shared memory, later opens must either omit Load From or use the same source path.
Named shared in-memory connections allow multiple live connections at once. One connection may own an explicit transaction at a time; other connections can still run reads against the last committed snapshot while that transaction is active.
Connection Pooling (Opt-In)
Connection pooling is disabled by default. Enable it explicitly in the connection string:
Data Source=myapp.db;Pooling=true;Max Pool Size=16
To force-release pooled physical connections (for example before deleting database files):
CSharpDbConnection.ClearPool("Data Source=myapp.db;Pooling=true;Max Pool Size=16");
CSharpDbConnection.ClearAllPools();
ClearPool and ClearAllPools also clear named shared in-memory hosts.
Installation
dotnet add package CSharpDB.Data
For the recommended all-in-one package:
dotnet add package CSharpDB
Dependencies
CSharpDB.Engine- embedded database engine
Related Packages
| Package | Description |
|---|---|
| CSharpDB | All-in-one package for application development |
| CSharpDB.Engine | Underlying embedded database engine |
| CSharpDB.Service | Thread-safe service layer built on this provider |
License
MIT - see LICENSE for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- CSharpDB.Engine (>= 1.7.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on CSharpDB.Data:
| Package | Downloads |
|---|---|
|
CSharpDB
All-in-one package for CSharpDB application development. Includes the unified client, engine, ADO.NET provider, service layer, and diagnostics. |
GitHub repositories
This package is not used by any popular GitHub repositories.