sqlite3命令行运行与C语言API调用比较2
在SQLite中,使用命令行与使用C语言API进行数据库操作有一些显著的区别。
命令行操作:
- 直接在命令行中输入SQLite命令,可以进行数据库的创建、表的创建、数据的插入、查询等操作。
C语言API操作:
- 需要先打开数据库,如果数据库不存在则创建。
- 执行SQL语句前,需要准备并绑定参数(如果使用参数化查询)。
- 执行完SQL语句后,需要处理结果。
以下是一个简单的示例,展示如何在C语言中使用SQLite API执行一个简单的查询操作。
#include <sqlite3.h>
#include <stdio.h>
int main() {
sqlite3 *db;
char *err_msg = 0;
int rc;
rc = sqlite3_open("test.db", &db);
if (rc != SQLITE_OK) {
fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
const char *sql = "SELECT * FROM my_table;";
sqlite3_stmt *stmt;
rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
if (rc != SQLITE_OK) {
fprintf(stderr, "Failed to prepare statement: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
while ((rc = sqlite3_step(stmt)) == SQLITE_ROW) {
// 处理结果集
int id = sqlite3_column_int(stmt, 0);
const unsigned char *name = sqlite3_column_text(stmt, 1);
printf("ID: %d, Name: %s\n", id, name);
}
sqlite3_finalize(stmt);
sqlite3_close(db);
return 0;
}
在这个例子中,我们首先打开了名为test.db
的数据库,然后准备了一个查询语句SELECT * FROM my_table;
的SQL语句对象。之后,我们在一个循环中通过sqlite3_step
执行这个语句,并在每次迭代中处理(打印)一行结果。如果执行过程中出现错误,我们会输出错误信息,并关闭数据库连接。
评论已关闭