使用 SQLite3 的 C API 来操作 SQLite3 数据库。以下是一个简单的示例程序,可以编译执行
时间: 2023-03-24 07:02:17 浏览: 55
你好,以下是使用 SQLite3 的 C API 操作 SQLite3 数据库的示例程序:
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
int main(int argc, char **argv) {
sqlite3 *db;
char *err_msg = ;
int 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;
}
char *sql = "CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INT);"
"INSERT INTO users(name, age) VALUES('John', 30);"
"INSERT INTO users(name, age) VALUES('Jane', 25);"
"INSERT INTO users(name, age) VALUES('Bob', 40);";
rc = sqlite3_exec(db, sql, , , &err_msg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", err_msg);
sqlite3_free(err_msg);
sqlite3_close(db);
return 1;
}
sqlite3_stmt *stmt;
rc = sqlite3_prepare_v2(db, "SELECT * FROM users;", -1, &stmt, );
if (rc != SQLITE_OK) {
fprintf(stderr, "Failed to prepare statement\n");
sqlite3_close(db);
return 1;
}
while ((rc = sqlite3_step(stmt)) == SQLITE_ROW) {
int id = sqlite3_column_int(stmt, );
const unsigned char *name = sqlite3_column_text(stmt, 1);
int age = sqlite3_column_int(stmt, 2);
printf("ID: %d, Name: %s, Age: %d\n", id, name, age);
}
sqlite3_finalize(stmt);
sqlite3_close(db);
return ;
}
希望对你有所帮助。