DuckDB.NET.Bindings
1.5.0
dotnet add package DuckDB.NET.Bindings --version 1.5.0
NuGet\Install-Package DuckDB.NET.Bindings -Version 1.5.0
<PackageReference Include="DuckDB.NET.Bindings" Version="1.5.0" />
<PackageVersion Include="DuckDB.NET.Bindings" Version="1.5.0" />
<PackageReference Include="DuckDB.NET.Bindings" />
paket add DuckDB.NET.Bindings --version 1.5.0
#r "nuget: DuckDB.NET.Bindings, 1.5.0"
#:package DuckDB.NET.Bindings@1.5.0
#addin nuget:?package=DuckDB.NET.Bindings&version=1.5.0
#tool nuget:?package=DuckDB.NET.Bindings&version=1.5.0
DuckDB.NET
DuckDB bindings for C#

Usage
dotnet add package DuckDB.NET.Data.Full
using (var duckDBConnection = new DuckDBConnection("Data Source=file.db"))
{
duckDBConnection.Open();
using var command = duckDBConnection.CreateCommand();
command.CommandText = "CREATE TABLE integers(foo INTEGER, bar INTEGER);";
var executeNonQuery = command.ExecuteNonQuery();
command.CommandText = "INSERT INTO integers VALUES (3, 4), (5, 6), (7, 8);";
executeNonQuery = command.ExecuteNonQuery();
command.CommandText = "Select count(*) from integers";
var executeScalar = command.ExecuteScalar();
command.CommandText = "SELECT foo, bar FROM integers";
var reader = command.ExecuteReader();
PrintQueryResults(reader);
}
private static void PrintQueryResults(DbDataReader queryResult)
{
for (var index = 0; index < queryResult.FieldCount; index++)
{
var column = queryResult.GetName(index);
Console.Write($"{column} ");
}
Console.WriteLine();
while (queryResult.Read())
{
for (int ordinal = 0; ordinal < queryResult.FieldCount; ordinal++)
{
var val = queryResult.GetInt32(ordinal);
Console.Write(val);
Console.Write(" ");
}
Console.WriteLine();
}
}
MotherDuck
To connect to MotherDuck:
using var duckDBConnection = new DuckDBConnection("DataSource=md:{your_database}?motherduck_token=ey...");
DuckDB Extensions (C#)
If you want to build DuckDB extensions with C#, see Giorgi/DuckDB.ExtensionKit.
Known Issues
When debugging your project that uses DuckDB.NET library, you may get the following error: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. The error happens due to debugger interaction with the native memory. For a workaround check out Debugger Options mess up debugging session during Marshalling
Documentation
Documentation is available at https://duckdb.net
Support
If you encounter a bug with the library Create an Issue. Join the DuckDB dotnet channel for DuckDB.NET-related topics.
Contributors
Sponsors
A big thanks to DuckDB Labs and AWS Open Source Software Fund for sponsoring the project!
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on DuckDB.NET.Bindings:
| Package | Downloads |
|---|---|
|
DuckDB.NET.Data
DuckDB ADO.NET Provider for C#. This package does not include a copy of the native DuckDB library. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.5.0 | 211 | 3/10/2026 |
| 1.4.4 | 8,468 | 2/3/2026 |
| 1.4.4-alpha.2 | 434 | 12/19/2025 |
| 1.4.3 | 16,790 | 12/11/2025 |
| 1.4.1 | 21,737 | 10/13/2025 |
| 1.3.2 | 20,528 | 7/8/2025 |
| 1.3.0 | 5,472 | 6/3/2025 |
| 1.2.1 | 4,870 | 3/5/2025 |
| 1.2.1-alpha.8 | 152 | 2/19/2025 |
| 1.2.0 | 8,600 | 2/6/2025 |
| 1.1.3 | 78,477 | 11/7/2024 |
| 1.1.2.1 | 38,955 | 10/21/2024 |
| 1.1.2-alpha.5 | 158 | 10/10/2024 |
| 1.1.1 | 12,446 | 9/24/2024 |
| 1.1.0.1 | 5,431 | 9/9/2024 |
| 1.0.2 | 13,489 | 7/22/2024 |
| 1.0.1 | 56,349 | 6/22/2024 |
| 1.0.0 | 5,904 | 6/3/2024 |
- Updated to DuckDB v1.5.0
- Dropped netstandard2.0 and net6.0 (now targets net8.0+)
- Migrated from DllImport to LibraryImport with source-generated P/Invoke
- Custom string marshallers for correct DuckDB string ownership handling
- SuppressGCTransition on trivial native calls

