C语言中使用SQLite数据库的连接语句详解 (c连接sqlite数据库语句)

SQLite是一款轻量级的嵌入式关系型数据库,适用于嵌入式设备和移动设备等资源有限的系统。它不需要独立的服务进程,可以直接访问存储在普通的磁盘文件中的数据,因此相对于其他数据库来说,SQLite占用的系统资源更少,性能更高。

在C语言中,我们可以通过SQLite API来连接SQLite数据库。这篇文章将详细介绍如何使用C语言中的SQLite API来连接SQLite数据库。主要包括以下几个方面:

1.连接SQLite数据库

2.插入数据

3.查询数据

4.更新数据

5.删除数据

1.连接SQLite数据库

在C语言中,我们可以使用sqlite3_open函数来创建一个与SQLite数据库的连接。该函数的原型如下:

“`

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

“`

该函数接收两个参数,之一个参数为要打开的SQLite数据库的文件名,包括路径,如果该文件不存在则会自动创建。第二个参数为用来存储SQLite数据库对象的指针。

连接SQLite数据库的示例代码如下:

“`c

#include

#include

int mn(int argc, char **argv)

{

sqlite3 *db;

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

if (rc)

{

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

sqlite3_close(db);

return 1;

}

else

{

printf(“Opened database successfully!\n”);

}

sqlite3_close(db);

return 0;

}

“`

在上述示例代码中,我们首先包含了sqlite3.h头文件,然后使用sqlite3_open函数连接了一个名为“test.db”的SQLite数据库。如果连接失败,我们将输出错误消息并返回错误代码。如果连接成功,我们将输出一条成功连接的消息。我们通过sqlite3_close函数关闭了与数据库的连接。

2.插入数据

要向SQLite数据库中插入数据,我们可以使用sqlite3_exec函数。这个函数可以执行在之一个参数中指定的任何SQL语句。该函数的原型如下:

“`c

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

“`

该函数接受五个参数,之一个参数为与SQLite数据库之间的连接。第二个参数为要执行的SQL语句。第三个参数为结果回调函数,可以在SQL执行期间或执行完成后进行一些操作。第四个参数为以上结果回调函数的之一个参数。第五个参数用于存储错误消息。

插入数据的示例代码如下:

“`c

#include

#include

int mn(int argc, char **argv)

{

sqlite3 *db;

int rc;

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

if (rc)

{

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

sqlite3_close(db);

return 1;

}

else

{

printf(“Opened database successfully!\n”);

}

char *sql = “INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) ” \

“VALUES (1, ‘Paul’, 32, ‘California’, 20230.00); “;

char *errmsg;

rc = sqlite3_exec(db, sql, NULL, NULL, &errmsg);

if (rc != SQLITE_OK)

{

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

sqlite3_free(errmsg);

}

else

{

printf(“Records created successfully!\n”);

}

sqlite3_close(db);

return 0;

}

“`

在上述示例代码中,我们通过sql变量设置了要执行的SQL语句,即向名为“COMPANY”的表中插入一条记录。然后我们将该SQL语句传递给sqlite3_exec函数来执行。如果执行期间发生错误,我们将通过sqlite3_free函数释放错误消息,并输出错误消息。否则,我们将输出一条成功插入的消息。

3.查询数据

要查询SQLite数据库中的数据,我们可以使用sqlite3_exec函数和结果回调函数。当sqlite3_exec执行SQL查询后,结果回调函数将被调用一次或多次。每次调用将返回一个结果行。每个结果行是由一个或多个数据值组成的数组。

结果回调函数的原型如下:

“`c

int callback(void *NotUsed, int argc, char **argv, char **azColName);

“`

除了之一个参数以外,其他参数只有在每行中具有一个以上的结果时才适用。之一个参数与sqlite3_exec的第四个参数相同,它是传递给结果回调函数的参数。第二个参数是结果集中的结果行数。第三个参数是由结果行中的每个元素组成的数组。第四个参数是包含每个结果行中的列名的数组。

查询数据的示例代码如下:

“`c

#include

#include

int callback(void *data, int argc, char **argv, char **azColName)

{

int i;

for (i = 0; i

{

printf(“%s = %s\n”, azColName[i], argv[i] ? argv[i] : “NULL”);

}

printf(“\n”);

return 0;

}

int mn(int argc, char **argv)

{

sqlite3 *db;

char *sql;

char *errmsg;

int rc;

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

if (rc)

{

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

sqlite3_close(db);

return 1;

}

else

{

printf(“Opened database successfully!\n”);

}

sql = “SELECT * from COMPANY;”;

rc = sqlite3_exec(db, sql, callback, NULL, &errmsg);

if (rc != SQLITE_OK)

{

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

sqlite3_free(errmsg);

}

else

{

printf(“Operation done successfully!\n”);

}

sqlite3_close(db);

return 0;

}

“`

在上述示例代码中,我们定义了一个名为callback的结果回调函数。然后,我们使用sqlite3_exec函数执行了一个SQL查询,该查询以指定的回调函数作为第三个参数。如果查询期间出现错误,我们将输出错误消息并释放错误消息。否则,我们将输出成功执行的消息。

4.更新数据

要更新从SQLite数据库中检索出的数据,我们可以使用sqlite3_exec函数。我们可以将UPDATE语句传递给该函数,并指定要更新的行和列。

更新数据的示例代码如下:

“`c

#include

#include

int mn(int argc, char **argv)

{

sqlite3 *db;

char *errmsg;

int rc;

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

if (rc)

{

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

sqlite3_close(db);

return 1;

}

else

{

printf(“Opened database successfully!\n”);

}

char *sql = “UPDATE COMPANY set SALARY = 25000.00 where ID=1; “;

rc = sqlite3_exec(db, sql, NULL, NULL, &errmsg);

if (rc != SQLITE_OK)

{

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

sqlite3_free(errmsg);

}

else

{

printf(“Total updated rows: %d\n”, sqlite3_changes(db));

}

sqlite3_close(db);

return 0;

}

“`

在上述示例代码中,我们通过UPDATE语句将ID为1的记录的薪水更新为25000.00。然后,我们将该SQL语句传递给sqlite3_exec函数。如果更新期间出现错误,我们将输出错误消息并释放错误消息。否则,我们将输出成功更新的行数。

5.删除数据

要从SQLite数据库中删除数据,我们可以使用sqlite3_exec函数。我们可以将DELETE语句传递给该函数,并指定要删除的行和列。

删除数据的示例代码如下:

“`c

#include

#include

int mn(int argc, char **argv)

{

sqlite3 *db;

char *errmsg;

int rc;

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

if (rc)

{

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

sqlite3_close(db);

return 1;

}

else

{

printf(“Opened database successfully!\n”);

}

char *sql = “DELETE from COMPANY where ID=1; “;

rc = sqlite3_exec(db, sql, NULL, NULL, &errmsg);

if (rc != SQLITE_OK)

{

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

sqlite3_free(errmsg);

}

else

{

printf(“Total deleted rows: %d\n”, sqlite3_changes(db));

}

sqlite3_close(db);

return 0;

}

“`

在上述示例代码中,我们使用DELETE语句删除ID为1的记录。然后,我们将该SQL语句传递给sqlite3_exec函数。如果删除期间出现错误,我们将输出错误消息并释放错误消息。否则,我们将输出成功删除的行数。


数据运维技术 » C语言中使用SQLite数据库的连接语句详解 (c连接sqlite数据库语句)