展示如何使用 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;
}
注意