← Back to Stormify Documentation
KDBC
Unified C Database Connectivity — SQLite, PostgreSQL, MariaDB, Oracle, MSSQL
Loading...
Searching...
No Matches
KDBC — Unified C Database Connectivity

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.

Supported Databases

Database Driver Native Library
SQLite KDBC_SQLITE libsqlite3
PostgreSQL KDBC_POSTGRES libpq
MariaDB / MySQL KDBC_MARIADB libmariadb
Oracle KDBC_ORACLE ODPI-C
MS SQL Server KDBC_MSSQL FreeTDS

Quick Example

#include "kdbc.h"
#include <stdio.h>
int main(void) {
kdbc_conn *conn = kdbc_connect(KDBC_SQLITE, ":memory:", NULL, NULL);
"CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)");
kdbc_stmt *stmt = kdbc_prepare(conn, "INSERT INTO users (name) VALUES (?)");
kdbc_bind_string(stmt, 1, "Alice");
kdbc_result *rs = kdbc_execute_query(conn, "SELECT id, name FROM users");
while (kdbc_next(rs) == 1)
printf("%lld: %s\n", (long long)kdbc_get_long(rs, 1), kdbc_get_string(rs, 2));
kdbc_close(conn);
}
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.

Key Design Points

  • Opaque handles: kdbc_conn, kdbc_stmt, kdbc_result
  • Runtime driver loading: no link-time dependency on any database client
  • JDBC-style ? placeholders: auto-translated to $1 (PostgreSQL), :1 (Oracle), or native ?
  • 1-indexed column and parameter indices
  • Per-handle error buffers with thread-local global fallback

API Groups

Browse the API by section using the navigation on the left, or see the complete reference for kdbc.h.