SQLite是更流行的嵌入式数据库,它使用轻量级的、无服务器的、自包含的方式存储数据,应用广泛,包括移动设备、桌面应用程序和Web浏览器等。SQLite提供了简单易用的C语言API以及其他语言的接口,因此我们可以使用C语言操作SQLite数据库。
本文旨在介绍如何使用C语言连接SQLite数据库,并提供一些常见操作的示例代码及说明。
一、准备工作
在使用C语言操作SQLite数据库之前,我们需要安装SQLite和相关C语言库。
1. 安装SQLite
我们可以从SQLite官网(https://sqlite.org/)下载预编译的SQLite库。在下载页面中,我们需要选择适合我们操作系统的版本,例如对于Windows系统,我们可以下载Windows DLL版本。下载后,我们需要将SQLite库文件放置在操作系统可搜索的路径中,例如在Windows系统中,SQLite库文件可以放置在系统目录下。
2. 安装C语言库
为了方便使用SQLite,我们可以使用第三方的C语言库。这里我们介绍两个流行的C语言库:
– sqlite3
sqlite3是C语言操作SQLite的一个轻量级库,它提供了SQLite数据库的所有功能。我们可以从官网下载sqlite3的源代码,编译后得到静态/动态库。将静态/动态库放到操作系统可搜索的路径中,我们即可在代码中使用sqlite3库。
– libsqlite3
libsqlite3是一个轻量级的、独立的SQLite库。它提供了SQLite数据库的所有功能,但是使用起来相对比较麻烦。我们可以从官网下载libsqlite3的源代码,编译后得到静态/动态库。将静态/动态库放到操作系统可搜索的路径中,我们即可在代码中使用libsqlite3库。
注意:在使用SQLite操作数据之前,我们需要创建相关的数据库文件及表。这些工作可以在SQLite命令行工具或第三方GUI工具中完成。这里不再介绍。
二、使用C语言连接SQLite数据库
在安装完SQLite和C语言库之后,我们可以打开一个编辑器,新建一个C语言文件,进行以下操作:
1. 引入SQLite头文件
我们需要包含SQLite的头文件“sqlite3.h”,引入以下代码:
“`c
#include
“`
2. 打开数据库
在打开SQLite数据库前,我们需要确定数据库文件的路径,并将路径放入以下代码中:
“`c
char *db_file = “test.db”; // test.db为数据库文件名
sqlite3 *db;
int rc = sqlite3_open(db_file, &db);
if (rc != SQLITE_OK) {
fprintf(stderr, “Can’t open database: %s\n”, sqlite3_errmsg(db));
return 1;
}
“`
以上代码可以打开名为“test.db”的SQLite数据库。打开成功后,我们可以使用指针变量“db”访问数据库。如果打开失败,则会返回相应的错误信息。
3. 执行SQL语句
在使用SQLite进行数据操作时,我们可以执行SQL语句。以下代码演示了如何执行一条CREATE TABLE语句:
“`c
char *sql = “CREATE TABLE user (id INT, name TEXT, age INT);”;
rc = sqlite3_exec(db, sql, NULL, 0, NULL);
if (rc != SQLITE_OK) {
fprintf(stderr, “SQL error: %s\n”, sqlite3_errmsg(db));
return 1;
}
“`
以上代码将会创建一个名为“user”的表格。如果创建失败,则会返回相应的错误信息。
4. 插入数据
在创建了表格后,我们可以向表格中插入数据。以下代码演示了如何插入一条记录:
“`c
char *sql = “INSERT INTO user (id, name, age) VALUES (1, ‘Tom’, 20);”;
rc = sqlite3_exec(db, sql, NULL, 0, NULL);
if (rc != SQLITE_OK) {
fprintf(stderr, “SQL error: %s\n”, sqlite3_errmsg(db));
return 1;
}
“`
以上代码将会向名为“user”的表格中插入一条记录,此记录包含了id、name和age三个字段。如果插入失败,则会返回相应的错误信息。
5. 查询数据
在向表格中插入数据后,我们可以查询表格中的数据。以下代码演示了如何查询表格中所有数据:
“`c
char *sql = “SELECT * FROM user;”;
sqlite3_stmt *stmt;
rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
if (rc != SQLITE_OK) {
fprintf(stderr, “SQL error: %s\n”, sqlite3_errmsg(db));
return 1;
}
int step = sqlite3_step(stmt);
while (step == SQLITE_ROW) {
int id = sqlite3_column_int(stmt, 0);
char *name = (char *)sqlite3_column_text(stmt, 1);
int age = sqlite3_column_int(stmt, 2);
printf(“id:%d, name:%s, age:%d\n”, id, name, age);
step = sqlite3_step(stmt);
}
if (rc != SQLITE_DONE) {
fprintf(stderr, “SQL error: %s\n”, sqlite3_errmsg(db));
return 1;
}
sqlite3_finalize(stmt);
“`
以上代码将会查询名为“user”的表格中所有记录,并将所有记录的id、name和age等字段输出。如果查询失败,则会返回相应的错误信息。
6. 关闭数据库
在完成对SQLite数据库的操作后,我们需要关闭数据库。以下代码演示了如何关闭数据库:
“`c
rc = sqlite3_close(db);
if (rc != SQLITE_OK) {
fprintf(stderr, “Can’t close database: %s\n”, sqlite3_errmsg(db));
return 1;
}
“`
以上代码将会关闭对名为“test.db”的SQLite数据库的连接。如果关闭失败,则会返回相应的错误信息。
三、
本文介绍了如何使用C语言连接SQLite数据库,并提供了一些常见操作的示例代码及说明。在使用SQLite进行数据操作时,我们需要注意以下几点:
– 在使用SQLite操作数据之前,我们需要创建相关的数据库文件及表。
– 在操作SQLite数据库时,我们需要使用sqlite3或libsqlite3库。
– 在每次操作完成后,我们需要关闭数据库连接。
– 在执行SQL语句时,需要判断返回值,以便打印错误信息。
相关问题拓展阅读:
- 如何在Linux下用C/C++语言操作数据库sqlite3
如何在Linux下用C/C++语言操作数据库sqlite3
0. 引言 我们这篇文章主要讲述了如何在C/C++语言中调用 sqlite 的函数接口来实现对数据库磨弯镇的管理, 包括创建数据库、创建表格、插入数据、查询数据、删除数据等。 1. 说明 这里我们假设你闹老已经编译好了sqlite的库文件 : libsqlite3.a libsqlite3.la libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6 pkgconfig 和可执行文件 : sqlite3 我们再假设你的sqlite3的安装目录在 /usr/local/sqlite3 目录下。 如果不是,我们可以这样做,将你的安装文件复制到 /usr/local/sqlite3 这个目录, 这样我们好在瞎粗下面的操作中更加统一,从而减少出错的概率 例如:# cp -rf sqlite-3.3.8-ix86/ /usr/local/sqlite3 这里假设 /home/sqlite-3.3.8-ix86/ 是你的安装目录,也就是说你的sqlite原来就是安装在这里 这样之后,我们的sqlite3的库文件目录是:/usr/local/sqlite3/lib 可执行文件 sqlite3 的目录是: /usr/local/sqlite3/bin 头文件 sqlite3.h 的目录是: /usr/local/sqlite3/include 好拉,现在开始我们的Linux下sqlite3编程之旅。 2. 开始 这里我们现在进行一个测试。 现在我们来写个C/C++程序,调用 sqlite 的 API 接口函数。 下面是一个C程序的例子,显示怎么使用 sqlite 的 C/C++ 接口. 数据库的名字由之一个参数取得且第二个参数或更多的参数是 SQL 执行语句. 这个函数调用sqlite3_open() 在 16 行打开数据库,并且sqlite3_close() 在 25 行关闭数据库连接。 # vi opendbsqlite.c 按下i 键切换到输入模式,输入下列代码:// name: opendbsqlite.c // This prog is used to test C/C++ API for sqlite3.It is very simple,ha! // Author : zieckey All rights reserved. // data : 2023/11/13 #include #include int main( void ) { sqlite3 *db=NULL; char *zErrMsg = 0; int rc; //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件 rc = sqlite3_open(“zieckey.db”, &db); if( rc ) { fprintf(stderr, “Can’t open database: %s “, sqlite3_errmsg(db)); sqlite3_close(db); exit(1); } else printf(“You have opened a sqlite3 database named zieckey.db successfully! Congratulations! Have fun ! ^-^ “); sqlite3_close(db); //关闭数据库 return 0; } 退出,保存。(代码输入完成后,按下 Esc 键,然后输入: :wq ,回车就好拉) 好拉,现在编译:# gcc opendbsqlite.c -o db.out 或者遇到这样的问题:# gcc opendbsqlite.c -o db.out opendbsqlite.c:11:21: sqlite3.h: 没有那个文件或目录 opendbsqlite.c: In function `main’: opendbsqlite.c:19: `sqlite3′ undeclared (first use in this function) opendbsqlite.c:19: (Each undeclared identifier is reported only once opendbsqlite.c:19: for each function it appears in.) opendbsqlite.c:19: `db’ undeclared (first use in this function) 这是由于没有找到头文件的原因。 也许会碰到类似这样的问题:# gcc opendbsqlite.c -o db.out /tmp/ccTkItnN.o(.text+0x2b): In function `main’: : undefined reference to `sqlite3_open’ /tmp/ccTkItnN.o(.text+0x45): In function `main’: : undefined reference to `sqlite3_errmsg’ /tmp/ccTkItnN.o(.text+0x67): In function `main’: : undefined reference to `sqlite3_close’ /tmp/ccTkItnN.o(.text+0x8f): In function `main’: : undefined reference to `sqlite3_close’ collect2: ld returned 1 exit status 这是个没有找到库文件的问题。 下面我们着手解决这些问题。 由于用到了用户自己的库文件,所用应该指明所用到的库,我们可以这样编译: # gcc opendbsqlite.c -o db.out -lsqlite3 我用用 -lsqlite3 选项就可以了(前面我们生成的库文件是 libsqlite3.so.0.8.6 等, 去掉前面的lib和后面的版本标志,就剩下 sqlite3 了所以是 -lsqlite3 )。 如果我们在编译安装的时候,选择了安装路径,例如这样的话:……. # ../sqlite/configure –prefix=/usr/local/sqlite3 # make …….作者:zieckeyc sqlite数据库连接的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c sqlite数据库连接,简单易用的C语言连接SQLite数据库,如何在Linux下用C/C++语言操作数据库sqlite3的信息别忘了在本站进行查找喔。