Linux C 操作sqlite3 数据库,demo应用
时间: 2023-03-23 18:04:54 浏览: 163
C sqlite3 数据库
可以使用 SQLite3 的 C API 来操作 SQLite3 数据库。以下是一个简单的示例程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
int main(int argc, char **argv)
{
sqlite3 *db;
char *err_msg = ;
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;
}
char *sql = "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER);"
"INSERT INTO users (name, age) VALUES ('Alice', 25);"
"INSERT INTO users (name, age) VALUES ('Bob', 30);"
"INSERT INTO users (name, age) VALUES ('Charlie', 35);";
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: %s\n", sqlite3_errmsg(db));
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);
}
if (rc != SQLITE_DONE) {
fprintf(stderr, "Failed to fetch data: %s\n", sqlite3_errmsg(db));
}
sqlite3_finalize(stmt);
sqlite3_close(db);
return ;
}
```
这个程序会创建一个名为 `test.db` 的 SQLite3 数据库,并在其中创建一个名为 `users` 的表,然后插入三条记录。最后,它会查询 `users` 表中的所有记录,并将它们打印出来。
阅读全文