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函数。如果删除期间出现错误,我们将输出错误消息并释放错误消息。否则,我们将输出成功删除的行数。
: