c语言sqlite3改多个参数,sqlite3的C语言使用(二)

前一天我列举了一些SQLite3库带的API,是SQLite的初级用法,今天我只讲一个API,但是用法会比前一次更好一点,便利一点。

还记得我们的sqlite3_exec函数么,今天就是说一下它的扩展用法。

函数原型

int sqlite3_exec(

sqlite3 *, /* An open database */

const char *sql, /* SQL to be evaluated */

int (*callback)(void*,int,char**,char**), /* 回调函数 */

void *, /* 传递给回调函数的参数 */

char **errmsg /* Error msg written here */

);

函数的作用就是执行sql语句,上次我们用这个函数执行的是CREATE TABLE命令,是不带返回值的。其实sqlite3_exec也能执行select语句,而且也能获得返回值,其中第三个参数(是个回调函数)起到了很大作用。

回调函数,就是在sqlite3_exec执行完成后自动被调用的函数。如果select返回多行数据,每返回一行回调函数将执行一次。(其中sqlite3_exec只用调用一次)

我来说明一下回调函数的各个参数。在sqlite3_exec的函数原型里可以看到,第三个参数是这么写的:

int (*callback)(void*,int,char**,char**)。

这就是回调函数的格式。回调函数中:

第一个参数是sqlite3_exec传进来的参数,也就是回调函数和外界交流的通道,比如我们可以传一个结构体指针地址进来,然后把查询到的数据保存在结构体中。

第二个参数是查询到的这一行总字段数n(总列数)。

第三个参数是一个数组,从0到n-1保存着咨询结果,都是字符串。

第四个参数和第三个对应,是每个字段的字段名,也是字符串。

知道了回调函数的格式,我们就可以利用sqlite3_exec来查询数据库并用回调函数处理查询结果了。函数可以这么写:

void AllSelect(sqlite3 * db)

{

char * errmsg;

int rc = sqlite3_exec(db,"select * from addlist",GetDate,NULL,&errmsg);

if(rc != SQLITE_OK)

{

printf("%s\n",errmsg);

}

return ;

}

int GetDate(void * para,int n_column,char** data_column,char** name_column)

{

printf("编号:%d 姓名:%s 性别:%s 电话:%s Email:%s 地址:%s\n",

data_column[0],data_column[1],data_column[2],data_column[3],

data_column[4],data_column[5]);

return 0;

}

相比于之前用sqlite3_prepare、sqlite3_step要简单很多吧?不过它也有局限性,如果数据库里保存着的是二进制文件(图片、压缩包什么的),就不能用了这个方法了。

还有,前一次没有注意到的,sqlite3_exec的最后一个参数errmsg,以前都传入的是NULL,其实对于数据库来说,这个参数是很有作用的,它可以获取数据库出错信息。正如我这次写的代码一样,如果sqlite3_exec执行不成功,则printf("%s\n",errmsg);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux下使用C语言操作SQLite3数据库的步骤如下: 1. 安装SQLite3库 在Linux系统,可以使用包管理器安装SQLite3库,例如在Ubuntu系统,可以使用以下命令安装: sudo apt-get install sqlite3 libsqlite3-dev 2. 创建数据库 使用SQLite3命令行工具创建一个数据库文件,例如: sqlite3 test.db 3. 创建表 在C语言程序使用SQLite3 API创建表,例如: sqlite3_exec(db, "CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)", NULL, NULL, &errmsg); 其db是SQLite3数据库句柄,errmsg是错误信息。 4. 插入数据 使用SQLite3 API插入数据,例如: sqlite3_exec(db, "INSERT INTO students (id, name, age) VALUES (1, 'Tom', 20)", NULL, NULL, &errmsg); 5. 查询数据 使用SQLite3 API查询数据,例如: sqlite3_exec(db, "SELECT * FROM students", callback, NULL, &errmsg); 其callback是回调函数,用于处理查询结果。 6. 关闭数据库 使用SQLite3 API关闭数据库,例如: sqlite3_close(db); 以上就是在Linux下使用C语言操作SQLite3数据库的基本步骤。 ### 回答2: 为了在Linux操作系统使用C语言SQLite3,需要进行以下步骤: 第一步,安装SQLite3库: 安装SQLite3库的命令:sudo apt-get install sqlite3 libsqlite3-dev 第步,安装SQLite3的C语言接口(SQLite3的API): SQLite3的C语言接口包括sqlite3.h头文件和sqlite3.c源文件。用户可以从官网上下载最新的API,或者使用以下命令进行安装: sudo apt-get install sqlite3-doc sudo apt-get install sqlite3-pcre 下面将介绍如何使用SQLite3 API实现数据库的增删查(CRUD)操作。 1、连接数据库: 在使用SQLite3库的函数之前,需要定义一个sqlite3类型的数据库对象,并使用sqlite3_open()函数来打开一个数据库。代码示例: sqlite3 *db;//定义一个SQLite3类型的数据库对象 sqlite3_open("test.db", &db);//打开名为test.db的数据库,如果不存在则创建它 2、创建表格: 使用sqlite3_exec()函数来执行SQL语句来创建表格。代码示例: char *sql = "create table person(id integer primary key autoincrement, name varchar(20), age integer)";//定义SQL语句 sqlite3_exec(db, sql, NULL, NULL, NULL);//执行SQL语句 3、插入数据: 使用sqlite3_exec()函数来执行SQL语句来插入数据。代码示例: char *sql = "insert into person(name, age) values('Tom', 25)";//定义SQL语句 sqlite3_exec(db, sql, NULL, NULL, NULL);//执行SQL语句 4、查询数据: 使用sqlite3_prepare_v2()函数来准备SQL语句并返回一个sqlite3_stmt对象,再用sqlite3_step()函数来执行查询。代码示例: char *sql = "select * from person";//定义SQL语句 sqlite3_stmt *stmt; if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) == SQLITE_OK) {//准备SQL语句 while (sqlite3_step(stmt) == SQLITE_ROW) {//执行查询 printf("id:%d, name:%s, age:%d\n", sqlite3_column_int(stmt, 0), sqlite3_column_text(stmt, 1), sqlite3_column_int(stmt, 2));//输出结果 } sqlite3_finalize(stmt);//释放sqlite3_stmt对象 } 5、更新数据: 使用sqlite3_exec()函数来执行SQL语句来更新数据。代码示例: char *sql = "update person set age=26 where id=1";//定义SQL语句 sqlite3_exec(db, sql, NULL, NULL, NULL);//执行SQL语句 6、删除数据: 使用sqlite3_exec()函数来执行SQL语句来删除数据。代码示例: char *sql = "delete from person where id=1";//定义SQL语句 sqlite3_exec(db, sql, NULL, NULL, NULL);//执行SQL语句 最后,使用sqlite3_close()函数来关闭打开的数据库连接: sqlite3_close(db);//关闭数据库连接 以上就是在Linux操作系统使用C语言SQLite3库进行数据库操作的基本步骤。SQLite3库具有轻巧,快速,可嵌入等特点,是很多开发者首选的数据库之一。 ### 回答3: Linux是一种开源的操作系统,许多程序员和开发人员使用Linux系统来进行软件开发。C语言是一种常用的编程语言,能够实现系统级编程。而SQLite是一种嵌入式数据库,是C语言编写的,能够存储和管理数据。 在Linux系统使用C语言编写程序,可以通过调用SQLite库来使用SQLite3数据库。首先需要安装SQLite3库,在终端可以通过以下命令进行安装: sudo apt-get install sqlite3 libsqlite3-dev 安装完成之后,就可以开始在C语言程序使用SQLite3数据库。需要在程序包含sqlite3.h头文件,并使用sqlite3_open函数打开数据库连接。 在打开连接之后,可以使用SQL语句进行数据操作。比如,可以通过执行CREATE TABLE语句来创建数据库表,通过INSERT语句来插入数据,通过SELECT语句来查询数据等等。在执行完相应的操作之后,需要使用sqlite3_close函数关闭数据库连接。 同时,在使用SQLite3数据库时,需要遵守一些注意事项。比如,需要对SQL语句进行输入验证,以避免SQL注入攻击;需要加锁来保证多线程的安全性等等。 总的来说,Linux系统和C语言SQLite3数据库的结合,可以实现高效、可靠的数据存储和管理。因此,在进行软件开发时,可以考虑使用这些技术来实现相关功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值