C语言如何连接和读取SQLite数据库 (c 读取sqlite数据库连接)

SQLite是一种轻量级的关系型数据库管理系统,它被广泛应用于各种应用程序中,包括移动应用程序和桌面应用程序。虽然SQLite不支持完整的客户端/服务器数据库架构,但它被设计用于嵌入式系统,具有便携性和易用性。C语言作为一门强大的编程语言,也可以利用SQLite实现关系型数据库的操作。本文将介绍如何连接和读取SQLite数据库。

一、 安装SQLite

在使用SQLite前,需要先安装SQLite库文件和SQLite命令行工具。这可以通过SQLite官方网站下载安装包进行安装,官网下载链接:https://www.sqlite.org/download.html 。

二、 创建SQLite数据库

在SQLite中,可以使用sqlite3_open()函数在C语言中创建一个SQLite数据库。其函数原型如下:

int sqlite3_open(const char *filename, sqlite3 **ppDb);

其中,filename参数是数据库的名称,ppDb是指向sqlite3指针的指针,用于存储SQLite数据库的地址。下面是使用sqlite3_open()函数创建SQLite数据库的一个示例:

sqlite3 *db;

int rc = sqlite3_open(“test.db”, &db);

if (rc != SQLITE_OK) {

fprintf(stderr, “Cannot open database: %s\n”, sqlite3_errmsg(db));

return 1;

} else {

fprintf(stdout, “Database opened successfully\n”);

sqlite3_close(db);

return 0;

}

在上面的示例中,我们使用sqlite3_open()函数创建了一个名为“test.db”的SQLite数据库,并将其分配给一个名为“db”的指针。如果返回值不是SQLITE_OK,则输出错误消息并退出程序。否则,输出成功消息并关闭数据库。

三、 SQLite数据库表的创建和插入

在SQLite中,可以通过执行SQL语句创建表格。在C语言中,可以使用sqlite3_exec()函数来执行SQL语句。其函数原型如下:

int sqlite3_exec(sqlite3*, const char *sql, int (*callback)(void*,int,char**,char**), void *, char **errmsg);

其中,sqlite3 *参数是SQLite数据库的指针,sql参数是要执行的SQL语句,*callback参数是回调函数,void *是一个指向目标对象的指针,指向目标对象以便在回调函数中处理数据。errmsg参数是错误信息的指针。下面是一个创建SQLite数据库表的示例:

sqlite3 *db;

char *zErrMsg = 0;

int rc;

rc = sqlite3_open(“test.db”, &db);

if (rc) {

fprintf(stderr, “Cannot open database: %s\n”, sqlite3_errmsg(db));

sqlite3_close(db);

return 1;

} else {

fprintf(stdout, “Database opened successfully\n”);

}

const char *sql = “CREATE TABLE students(“

“id INT PRIMARY KEY NOT NULL,”

“name TEXT NOT NULL,”

“age INT NOT NULL,”

“gender TEXT NOT NULL);”;

rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);

if (rc != SQLITE_OK) {

fprintf(stderr, “SQL error: %s\n”, zErrMsg);

sqlite3_free(zErrMsg);

} else {

fprintf(stdout, “Table created successfully\n”);

}

sqlite3_close(db);

在上面的示例中,我们创建了一个名为“students”的表格,并指定了它的主键、名称、年龄和性别的列。如果SQL语句执行成功,则输出成功消息。接下来,我们在该表格中插入一些数据。我们可以使用sqlite3_exec()函数执行SQL语句,如下所示:

rc = sqlite3_open(“test.db”, &db);

if (rc) {

fprintf(stderr, “Cannot open database: %s\n”, sqlite3_errmsg(db));

sqlite3_close(db);

return 1;

} else {

fprintf(stdout, “Database opened successfully\n”);

}

sql = “INSERT INTO students (id, name, age, gender) “

“VALUES (1, ‘John Doe’, 22, ‘Male’); “

“INSERT INTO students (id, name, age, gender) “

“VALUES (2, ‘Jane Smith’, 25, ‘Female’); “;

rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);

if (rc != SQLITE_OK) {

fprintf(stderr, “SQL error: %s\n”, zErrMsg);

sqlite3_free(zErrMsg);

} else {

fprintf(stdout, “Records created successfully\n”);

}

sqlite3_close(db);

在上面的示例中,我们在“students”表格中插入了两条记录。如果我们将SQLite数据库视为一个文件,那么当我们执行完INSERT语句后,该文件将包含表格和插入的数据。

四、 读取SQLite数据库表

我们可以使用SQL语句从SQLite数据库表中读取数据。在C语言中,我们可以使用sqlite3_prepare()函数准备SQL语句,并使用sqlite3_step()函数执行SQL查询。下面是一个从“students”表格中读取数据的示例:

sqlite3 *db;

sqlite3_stmt *stmt;

int rc;

rc = sqlite3_open(“test.db”, &db);

if (rc) {

fprintf(stderr, “Cannot open database: %s\n”, sqlite3_errmsg(db));

sqlite3_close(db);

return 1;

} else {

fprintf(stdout, “Database opened successfully\n”);

}

const char *sql = “SELECT id, name, age, gender FROM students;”;

rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0);

if (rc != SQLITE_OK) {

fprintf(stderr, “SQL error: %s\n”, sqlite3_errmsg(db));

sqlite3_close(db);

return 1;

}

while (sqlite3_step(stmt) == SQLITE_ROW) {

int id = sqlite3_column_int(stmt, 0);

char *name = (char *) sqlite3_column_text(stmt, 1);

int age = sqlite3_column_int(stmt, 2);

char *gender = (char *) sqlite3_column_text(stmt, 3);

printf(“ID = %d, Name = %s, Age = %d, Gender = %s\n”, id, name, age, gender);

}

sqlite3_finalize(stmt);

sqlite3_close(db);

在上面的示例中,我们使用SELECT语句从“students”表格中读取所有列的值。sqlite3_prepare_v2()函数准备SQL语句,并使用sqlite3_step()函数执行。在while循环中,我们使用sqlite3_column_int()和sqlite3_column_text()函数获取列的值,并将其显示在控制台中。

结论

在本文中,我们了解了如何使用C语言连接和读取SQLite数据库。SQLite是一种轻量级和便携式的关系型数据库管理系统,可以嵌入到各种应用程序中。使用SQLite,开发人员可以创建易于维护和读取的数据库。希望这篇文章能够帮助你更好地理解如何在C语言中使用SQLite。


数据运维技术 » C语言如何连接和读取SQLite数据库 (c 读取sqlite数据库连接)