数据库

SQLite

展示如何使用 libcc 的 SQL 抽象层(`_cc_sql_delegate_t`)与 sqlite 绑定。示例简化自 `tests/test_sqlite.c`。

示例(`examples/sqlite_example.c`)

#include <stdio.h>
#include <libcc.h>
#include <libcc/sql.h>

int main(void) {
    _cc_sql_delegate_t sql_delegate;
    _cc_sql_t *sql = NULL;
    _cc_string_t sqlstr;

    _cc_init_sqlite(&sql_delegate);
    sql = sql_delegate.connect(_T("SQLITE:///./example.db"));
    if (!sql) {
        _cc_logger_error(_T("sqlite connect failed"));
        return 1;
    }

    _cc_string_set(sqlstr, _T("CREATE TABLE IF NOT EXISTS demo (id INTEGER PRIMARY KEY, val TEXT);") );
    sql_delegate.execute(sql, &sqlstr, NULL);

    _cc_string_set(sqlstr, _T("INSERT INTO demo(val) VALUES('hello');"));
    sql_delegate.execute(sql, &sqlstr, NULL);

    _cc_string_set(sqlstr, _T("SELECT id, val FROM demo;"));
    _cc_sql_result_t *result = NULL;
    if (sql_delegate.execute(sql, &sqlstr, &result)) {
        while (sql_delegate.fetch(result)) {
            char buff[256];
            sql_delegate.get_string(result, 1, buff, sizeof(buff));
            _cc_logger_info(_T("row: %s"), buff);
        }
        sql_delegate.free_result(sql, result);
    }

    sql_delegate.disconnect(sql);
    return 0;
}

注意

  • 示例使用内置 sqlite 适配层,确保编译时包含 sqlite 支持(请查看 `build/libcc-files.mak` 与 Makefile 中的选项)。

MySQL

SQL Server