A lightweight C11 library that provides a single API for multiple database backends. Libraries are loaded at runtime via dlopen, so missing backends are handled gracefully — only the drivers you actually use need to be installed.
#include <stdio.h>
int main(void) {
"CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)");
}
void kdbc_close(kdbc_conn *conn)
Close a connection and free all associated resources.
kdbc_conn * kdbc_connect(kdbc_driver driver, const char *url, const char *user, const char *password)
Open a database connection.
int kdbc_execute_update(kdbc_conn *conn, const char *sql)
Execute a non-parameterized DML/DDL statement directly.
kdbc_result * kdbc_execute_query(kdbc_conn *conn, const char *sql)
Execute a non-parameterized SELECT directly.
int kdbc_execute_update_stmt(kdbc_stmt *stmt)
Execute a prepared DML statement (INSERT/UPDATE/DELETE).
void kdbc_stmt_close(kdbc_stmt *stmt)
Close a prepared statement and free resources.
int kdbc_next(kdbc_result *rs)
Advance to the next row.
void kdbc_result_close(kdbc_result *rs)
Close a result set and free resources.
int64_t kdbc_get_long(kdbc_result *rs, int col)
Get a column value as a 64-bit integer.
const char * kdbc_get_string(kdbc_result *rs, int col)
Get a column value as a UTF-8 string.
kdbc_stmt * kdbc_prepare(kdbc_conn *conn, const char *sql)
Prepare a SQL statement.
int kdbc_bind_string(kdbc_stmt *stmt, int idx, const char *val)
Bind a UTF-8 string parameter.
struct kdbc_conn kdbc_conn
Opaque database connection handle.
Definition kdbc.h:41
struct kdbc_result kdbc_result
Opaque result set handle.
Definition kdbc.h:47
struct kdbc_stmt kdbc_stmt
Opaque prepared statement handle.
Definition kdbc.h:44
@ KDBC_SQLITE
Definition kdbc.h:57
KDBC Native — Unified C Database Connectivity.