数据库
SQL
1.SQLite
展示如何使用 libcc 的 SQL 抽象层(_cc_sql_delegate_t)与 sqlite 绑定。示例简化自 tests/test_sqlite.c。
注意
- 示例使用内置 sqlite 适配层,确保编译时包含 sqlite 支持(请查看 build/local-files.mak 与 Makefile 中的选项)。
- USE_LIB_SQLITE3=1 - 启用 SQLite 数据库支持
2. MySQL
展示如何使用 libcc 的 SQL 抽象层(_cc_sql_delegate_t)与 mysql 绑定。示例简化自 tests/test_mysql.c。
注意
- USE_LIB_MYSQL=1 - 启用 MySQL 数据库支持
3. SQL Server
展示如何使用 libcc 的 SQL 抽象层(_cc_sql_delegate_t)与 sqlite 绑定。示例简化自 tests/test_sqlserver.c。
注意
- USE_LIB_SQLSEVER=1 - 启用 MySQL 数据库支持
示例
#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);
//_cc_init_mysql(&sql_delegate);
//_cc_init_sqlsvr(&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;
}