玩转SQLite-11:C语言高效API之sqlite3_prepare系列函数
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
static int callback(void *NotUsed, int argc, char **argv, char **azColName) {
for (int i = 0; i < argc; i++) {
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
int main() {
sqlite3 *db;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("example.db", &db);
if (rc) {
fprintf(stderr, "无法打开数据库: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
const char *sql = "SELECT * FROM COMPANY;";
sqlite3_stmt *stmt;
rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL错误: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
sqlite3_close(db);
exit(1);
}
while (sqlite3_step(stmt) == SQLITE_ROW) {
callback(NULL, sqlite3_column_count(stmt), sqlite3_column_value(stmt, 0), NULL);
}
sqlite3_finalize(stmt);
sqlite3_close(db);
return 0;
}
这段代码首先包含了必要的头文件,并定义了一个回调函数用于打印查询结果。在main函数中,它尝试打开一个名为"example.db"的SQLite数据库,并准备一个SQL查询。如果准备成功,它会在循环中逐行执行该查询并通过回调函数打印结果。最后,它释放准备的语句并关闭数据库连接。这个例子展示了如何使用sqlite3\_prepare\_v2系列函数来准备和执行SQL语句,并处理可能出现的错误。
评论已关闭