当前位置: 首页 > news >正文

阿里云网站建设好用吗军事网报名入口

阿里云网站建设好用吗,军事网报名入口,wordpress怎么添加ga统计,二级域名可以做不同的网站吗目录 一、SQLite数据库 1.1 SQLite 的特点#xff1a; 1.2 SQLite 的使用场景#xff1a; 1.3 SQLite数据库与传统MySQL数据库的区别#xff1a; 二、SQLite数据库安装 2.1 SQLite数据库安装方式一#xff1a; 2.2 SQlite数据库安装方式二#xff1a; 三、SQLite数…目录 一、SQLite数据库 1.1 SQLite 的特点 1.2 SQLite 的使用场景 1.3 SQLite数据库与传统MySQL数据库的区别 二、SQLite数据库安装 2.1 SQLite数据库安装方式一 2.2 SQlite数据库安装方式二 三、SQLite数据库的命令用法 3.1 创建/打开一个数据库 3.3.1 创建/打开数据库方式一 3.3.2 创建/打开数据库方式二 3.2 创建一张表格 3.3 插入一条记录 3.4 查看数据库的记录 3.5 删除一条记录 3.6 删除一张表格 3.7 更改一条记录 3.8 增加一列 四、SQLite数据库的编程操作 4.1 创建/打开数据库函数sqlite3_open()原型和头文件 4.2 创建/打开数据库示例用法 4.3 关闭数据库函数sqlite_close()原型和头文件 4.4 关闭数据库示例用法 4.5 获取与最后一次数据库操作错误代码函数sqlite3_errcode()原型和头文件 4.6 获取与最后一次数据库操作错误代码示例用法 4.7 SQLite数据库C接口结果代码 4.8 数据库打开关闭出错案例 4.9 执行SQL语句函数sqlite3_exec()原型和头文件 4.10 callback回调函数原型 4.11 使用sqlite3_exec()函数执行SQL语句案例 4. 12 C代码创建表和插入数据 五、SQLite数据库的其他编程操作 5.1 创建CREATE表 5.2 插入数据INSERT到创建的表中 5.3 查询数据SELECT操作 5.4 更改数据UPDATE操作 5.5 删除数据DELETE操作 一、SQLite数据库 SQLite 是一个流行的嵌入式关系数据库管理系统它使用单一的磁盘文件或内存中的数据库来存储整个数据库。SQLite 是一种轻量级的数据库特别适合用于移动设备、嵌入式系统以及需要较小数据库支持的应用程序。它不需要配置、服务器或网络并且易于部署和管理。 1.1 SQLite 的特点 轻量级SQLite 的代码库非常小可以很容易地集成到应用程序中。 独立性SQLite 不需要外部服务器或数据库引擎它直接读写磁盘上的数据库文件。 跨平台SQLite 支持多种操作系统包括 Windows、Linux、macOS 等。 ACID 兼容SQLite 支持事务处理具有原子性Atomicity、一致性Consistency、隔离性Isolation和持久性Durability的特性。 易于使用SQLite 提供了简单的 SQL 语句接口易于学习和使用。 高效SQLite 的查询优化器会自动选择最有效的算法来执行 SQL 语句。 1.2 SQLite 的使用场景 移动应用由于 SQLite的轻量级和跨平台特性它非常适合用于移动应用程序中如 Android 和 iOS 应用。 桌面应用SQLite 也可以用于桌面应用程序中特别是那些需要本地数据存储的应用。 嵌入式系统在资源受限的嵌入式系统中SQLite 因其低资源消耗和易于集成而广受欢迎。 测试和开发SQLite 因其简单性和轻量级也常被用于数据库测试和开发阶段。 1.3 SQLite数据库与传统MySQL数据库的区别 基于嵌入式的数据库主要有SQLiteFirebirdBerkeley DBeXtremeDB Firebird 是关系型数据库功能强大支持存储过程SQL兼容等 SQLite 关系型数据库体积小支持ACID事务 Berkeley DB 并没有数据库服务器的概念他的程序直接链接到应用程序中 eXtremeDB 是内存数据库运行效率高 二、SQLite数据库安装 2.1 SQLite数据库安装方式一 sudo apt-get -y install sqlite 安装成功后执行sqlite就可以进入sqlite数据库命令行但是此时安装的版本是2.8.17一般现在sqlite3使用的场景更多所以我想升级成sqlite3版本的运行sudo apt-get -y install sqlite3指令出现找不到这个版本只能去官网上下载了于是引入安装方式二 2.2 SQlite数据库安装方式二 https://www.sqlite.org/download.html //sqlite数据库官方网址 下载好之后将下载的安装包上传到香橙派 1. 把下载的文件sqlite-autoconf-3460000.tar.gz //上传到开发板 2. tar xvf sqlite-autoconf-3460000.tar.gz //解压 3. cd sqlite-autoconf-3460000 //进入文件夹 4. ./configure --prefix/usr/local //配置安装路径在/usr/local 5. make //编译时间会比较久大约10分钟 6. sudo make install //安装 7. 安装成功后输入sqlite3连入数据库 //安装数据库的版本是3.46.0 8. 输入.exit退出数据库 三、SQLite数据库的命令用法 SQLite 是一个无服务器、零配置、自给自足的嵌入式 SQL 数据库引擎。它的使用非常简单适合于小型项目和嵌入式设备。 3.1 创建/打开一个数据库 3.3.1 创建/打开数据库方式一 1. sqlite3 //进入数据库 2. .open test.db //打开/创建一个数据库 3. .quit //退出 4. 数据库退出后在命令当前路径创建数据库test.db 3.3.2 创建/打开数据库方式二 1. sqlite3 test.db //在命令运行当前窗口创建数据库test.db 2. .databases //在数据库命令下,列出当前打开的数据库 3. .quit //退出 3.2 创建一张表格 create table stu(id Integer,name char,score Integer); //在这里“int”应该写成“Integer”且写在变量名的后方 打开刚刚创建的test.db数据库并在其中添加一张名为stu的表格表格有三个字段整型的id和scorechar型的name .tables //查看当前打开的表格 3.3 插入一条记录 insert into stu values(1,LiMing,99); //插入一条完整的字段insert into stu(name,score) values(ZhangSan,59); //插入部分字段内容 上面指令分别将一个名为LiMing的同学的IDname, scoer插入到了stu表格将一个名为ZhangSan的同学的name, scoer部分插入到stu表格 3.4 查看数据库的记录 select * from stu; //查询所有字段的结果select name,score from stu; //查询数据库中部分字段的内容 3.5 删除一条记录 delete from stu where id 3; 3.6 删除一张表格 drop table stu2; 3.7 更改一条记录 update stu set name ShiYaHao where id 1; //根据后面的ID修改前面的name把ID为1的内容的name该成ShiYaHao update stu set name RaoYun where id 2; //根据后面的ID修改前面的name把ID为2的内容的name该成RaoYun 3.8 增加一列 alter table stu add column sex char; //给stu表格增加性别列update stu set sex men where name ShiYaHao; //给ShiYaHao添加性别 update stu set sex women where name RaoYun; //给RaoYun添加性别 四、SQLite数据库的编程操作 以下是重要的 CC / SQLite 接口程序可以满足您在 C/C 程序中使用 SQLite 数据库的需求。如果您需要了解更多细节请查看 SQLite 官方文档。 4.1 创建/打开数据库函数sqlite3_open()原型和头文件 #include sqlite3.hint sqlite3_open(const char *filename, sqlite3 **ppDb);int 函数返回值如果操作成功返回SQLITE_OK0。如果出现错误。返回一个错误代码。常见的错误代码包括 SQLITE_CANTOPEN不能打开数据库文件和SQLITE_MISUSE错误的使用方式等。char *filename 要打开或创建的数据库文件的路径。如果为NULL或者指定为:memory:则在内存中创建一个临时数据库sqlite3 **ppDb 用于存储指向数据库连接对象的指针的地址。在函数成功调用后这个指针将指向一个新的sqlite3对象可以用于后续的数据库操作。/*函数说明sqlite3_open是SQLite库中的一个函数用于打开或创建一个SQLite数据库文件并返回一个指向该数据库的连接对象。*/ 4.2 创建/打开数据库示例用法 #include stdio.h #include sqlite3.hint main() {sqlite3 *db; //声明数据库变量//int sqlite3_open(const char *filename, sqlite3 **ppDb);int ret sqlite3_open(test.db, db); //打开数据库 if(ret ! SQLITE_OK){printf(打开数据库错误: %s\n, sqlite3_errmsg(db)); //输出错误信息sqlite3_close(db); //关闭数据库return 1;} printf(数据库打开成功\n);sqlite3_close(db); //关闭数据库return 0; } 4.3 关闭数据库函数sqlite_close()原型和头文件 #include sqlite3.hint sqlite3_close(sqlite3 *db);int 函数返回值如果操作成功返回SQLITE_OK0。如果出现错误。返回一个错误代码。常见的错误代码包括 SQLITE_CANTOPEN不能打开数据库文件和SQLITE_MISUSE错误的使用方式等。sqlite3 *db 指向要关闭的数据库连接对象的指针。/*函数说明sqlite3_close是SQLite库中的函数之一用于关闭之前通过sqlite3_open打开的数据库连接。*/ 4.4 关闭数据库示例用法 #include stdio.h // 包含标准输入输出库头文件 #include sqlite3.h // 包含SQLite数据库操作库头文件int main() {int ret;sqlite3 *db; //声明数据库对象 //int sqlite3_open(const char *filename, sqlite3 **ppDb);ret sqlite3_open(test.db, db); //打开数据库 if(ret ! SQLITE_OK){printf(打开数据库错误%s\n,sqlite3_errmsg(db)); //输出错误信息return 1;}else{printf(数据库打开成功\n);}ret sqlite3_close(db); //关闭数据库if(ret ! SQLITE_OK){printf(关闭数据库错误%s\n,sqlite3_errmsg(db)); //输出错误信息return 1;}else{printf(数据库关闭成功\n);}return 0; } 4.5 获取与最后一次数据库操作错误代码函数sqlite3_errcode()原型和头文件 #include sqlite3.hint sqlite3_errcode(sqlite3 *db);int 函数返回值返回与最后一次数据库操作相关的错误代码。如果之前的操作没有错误将返回SQLITE_OK0。sqlite3 *db 已经打开的SQLite数据库连接对象。/*函数说明sqlite3_errcode是SQLite库中的一个函数用于获取与最后一次数据库操作相关的错误代码。*/ 4.6 获取与最后一次数据库操作错误代码示例用法 #include stdio.h #include sqlite3.hint main() {int ret;sqlite3 *db; //打开数据库//int sqlite3_open(const char *filename, sqlite3 **ppDb);ret sqlite3_open(test.db, db);if(ret ! SQLITE_OK){printf(打开数据库错误%s\n,sqlite3_errmsg(db));return 1;}else{printf(打开数据库成功\n);}//获取与最后一次数据库操作相关的错误代码//int sqlite3_errcode(sqlite3 *db);printf(最后一次数据库操作相关的错误代码%d\n,sqlite3_errcode(db));//关闭数据库连接sqlite3_close(db); return 0; } 4.7 SQLite数据库C接口结果代码 [官方C接口结果代码](https://sqlite.org/c3ref/c_abort.html) 许多 SQLite 函数从此处显示的集合中返回一个整数结果代码以指示成功或失败。 #define SQLITE_OK 0 /* Successful result */ /* beginning-of-error-codes */错误代码 #define SQLITE_ERROR 1 /* Generic error */一般错误 #define SQLITE_INTERNAL 2 /* Internal logic error in SQLite */内部逻辑错误 #define SQLITE_PERM 3 /* Access permission denied */访问权限被拒绝 #define SQLITE_ABORT 4 /* Callback routine requested an abort */回调例程请求中止 #define SQLITE_BUSY 5 /* The database file is locked */数据库文件被锁定 #define SQLITE_LOCKED 6 /* A table in the database is locked */数据库中的某个表被锁定 #define SQLITE_NOMEM 7 /* A malloc() failed */malloc() 失败 #define SQLITE_READONLY 8 /* Attempt to write a readonly database */尝试写入只读数据库 #define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt() */操作由 sqlite3_interrupt() 终止 #define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */发生某种磁盘 I/O 错误 #define SQLITE_CORRUPT 11 /* The database disk image is malformed */数据库磁盘映像格式错误 #define SQLITE_NOTFOUND 12 /* Unknown opcode in sqlite3_file_control() */sqlite3_file_control() 中的未知操作码 #define SQLITE_FULL 13 /* Insertion failed because database is full */由于数据库已满插入失败 #define SQLITE_CANTOPEN 14 /* Unable to open the database file */无法打开数据库文件 #define SQLITE_PROTOCOL 15 /* Database lock protocol error */数据库锁定协议错误 #define SQLITE_EMPTY 16 /* Internal use only */仅供内部使用 #define SQLITE_SCHEMA 17 /* The database schema changed */数据库架构已更改 #define SQLITE_TOOBIG 18 /* String or BLOB exceeds size limit */字符串或 BLOB 超出大小限制 #define SQLITE_CONSTRAINT 19 /* Abort due to constraint violation */由于违反约束而中止 #define SQLITE_MISMATCH 20 /* Data type mismatch */数据类型不匹配 #define SQLITE_MISUSE 21 /* Library used incorrectly */库使用不正确 #define SQLITE_NOLFS 22 /* Uses OS features not supported on host */使用主机不支持的 OF 功能 #define SQLITE_AUTH 23 /* Authorization denied */授权被拒绝 #define SQLITE_FORMAT 24 /* Not used */不曾用过 #define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */sqlite3_bind 的第二个参数超出范围 #define SQLITE_NOTADB 26 /* File opened that is not a database file */打开的文件不是数据库文件 #define SQLITE_NOTICE 27 /* Notifications from sqlite3_log() */来自 sqlite3_log() 的通知 #define SQLITE_WARNING 28 /* Warnings from sqlite3_log() */来自 sqlite3_log() 的警告 #define SQLITE_ROW 100 /* sqlite3_step() has another row ready */sqlite3_step() 已准备好另一行 #define SQLITE_DONE 101 /* sqlite3_step() has finished executing */sqlite3_step() 已完成执行 /* end-of-error-codes */ 4.8 数据库打开关闭出错案例 #include stdio.h // 包含标准输入输出库头文件 #include sqlite3.h // 包含SQLite数据库操作库头文件int main(int argc, char **argv) {int ret;sqlite3 *db;if(argc 2){ //参数错误printf(参数错误,Usage:%s xxx.db\n, argv[0]);return 1;}//int sqlite3_open(const char *filename, sqlite3 **ppDb);ret sqlite3_open(argv[1],db); //打开数据库if(ret SQLITE_OK){ //打开成功 printf(打开%s数据库成功\n,argv[1]);}else{printf(打开%s数据库失败:%s\n,argv[1],sqlite3_errmsg(db)); //打开失败if(ret SQLITE_CANTOPEN){ //数据库文件不存在或无法打开printf(数据库文件不存在或无法打开\n);}return 1;} //int sqlite3_close(sqlite3 *db);sqlite3_close(db); //关闭数据库 printf(关闭%s数据库成功\n,argv[1]);printf(done\n);return 0; } 4.9 执行SQL语句函数sqlite3_exec()原型和头文件 #include sqlite3.hint sqlite3_exec( sqlite3* db, /* SQLite 数据库连接对象 */ const char *sql, /* 要执行的 SQL 语句 */ int (*callback)(void*,int,char**,char**), /* 回调函数用于处理 SELECT 查询的每行结果如果 SQL 不返回结果则为 NULL*/ void *arg, /* 传递给回调函数的参数 */ char **errmsg /* 用于存放错误信息如果有的话的指针的地址 */ );int 函数返回值如果操作成功返回SQLITE_OK0。如果出现错误返回一个错误代码。常见的错误代码包括SQLITE_ERROR SQL语句执行错误和SQLITE_MISUSE错误的使用方式等。sqlite3* 已经打开的SQLite数据库连接对象。 char *sql 要执行的SQL语句。可以包含一个或多个SQL命令。sqlite_callback 回调函数用于处理每个结果行。该函数的签名应该为int callback(void*, int, char**, char**)其中参数 分别是用户定义的数据指针data、列数、列的数据数组、列的名称数组。void *arg data 作为其第一个参数传递给回调函数的用户定义的数据指针。 char **errmsg 用于存储错误消息的指针。如果执行过程中发生错误该指针将指向包含错误消息的字符串。/* 函数说明sqlite3_exec是SQLite库中的一个函数用于执行一个或多个SQL语句并通过回调函数处理结果。 */ 4.10 callback回调函数原型 在SQLite中sqlite3_exec函数通常与回调函数一起使用以处理执行SQL语句后的结果。回调函数是在每个结果行上调用的用户定义的函数用于处理查询结果。 int callback(void *arg, int column_size, char *column_value[], char *column_name[]);int 函数返回值回调函数应该返回一个整数值通常为0。如果返回非零值sqlite3_exec函数将停止执行并返回相同的值。void *arg 是sqlite3_exec函数的第四个参数 int column_size 数据库的字段数 char *column_value[] 包含每一列的值的数组。 char *column_name[] 包含每一列名称的数组(字段名字). 4.11 使用sqlite3_exec()函数执行SQL语句案例 #include stdio.h //包含stdio.h头文件 #include sqlite3.h //包含sqlite3.h头文件/* 回调函数 */ int callback(void *arg, int column_size, char *column_value[], char *column_name[]) {int i;printf(%s\n,(char *)arg); //打印SQL语句for(i0; icolumn_size; i){ printf(%s %s\n,column_name[i],column_value[i]); //打印每一列的名称和值}printf(\n);return 0; }int main(int argc, char **argv) {int ret;sqlite3 *db; //声明数据库对象char *errMessage NULL; //声明错误信息指针 if(argc 2){printf(请输入数据库文件名 xxx.db\n);return -1;}//int sqlite3_open(const char *filename, sqlite3 **ppDb);ret sqlite3_open(argv[1], db); //打开数据库 if(ret ! SQLITE_OK){ //数据库打开失败printf(打开数据库失败:%s\n,sqlite3_errmsg(db));if(ret SQLITE_CANTOPEN){ //数据库文件不存在或无法打开printf(数据库文件不存在或无法打开\n);} }else{ //数据库打开成功 printf(打开%s数据库成功\n, argv[1]);}//int sqlite3_exec(sqlite3 *db, const char *sql, int (*callback)(void*,int,char**,char**), void *arg, char **errmsg);sqlite3_exec(db, select * from stu;, callback, SQL的内容, errMessage); //执行SQL语句//int sqlite3_close(sqlite3 *db);sqlite3_close(db); //关闭数据库printf(关闭数据库成功\n);return 0; } 4. 12 C代码创建表和插入数据 #include stdio.h #include sqlite3.hint callback(void *arg, int column_size, char *column_value[], char *column_name[]) //回调函数 {int i;printf(%s\n,(char *)arg); //打印SQL语句 for(i0; icolumn_size; i){printf(%s %s\n,column_name[i],column_value[i]); //打印每一列的名称和值}printf(\n);return 0; }int main(int argc, char **argv) {int ret; //声明返回值变量sqlite3 *db; //声明数据库指针 char *errorMessage NULL; //声明错误信息指针if(argc 2){ //判断是否有参数printf(请输入数据库文件名 xxx.db\n);return -1;}ret sqlite3_open(argv[1],db); //打开数据库文件if(ret ! SQLITE_OK){printf(无法打开数据库文件: %s\n,sqlite3_errmsg(db));if(ret SQLITE_CANTOPEN){printf(请检查文件是否存在或是否有权限打开\n);}}else{printf(%s数据库打开成功\n,argv[1]);}//sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)ret sqlite3_exec(db, create table Class(id Integer,name char,score Integer);, \callback, SQL的内容, errorMessage); //执行SQL语句,创建表Classif(ret ! SQLITE_OK){printf(SQL语句执行失败: %s\n,errorMessage);}else{printf(创建表Class成功\n);}ret sqlite3_exec(db, insert into Class values(1,张三,90);, \callback, SQL的内容, errorMessage); //执行SQL语句,插入数据if(ret ! SQLITE_OK){printf(SQL语句执行失败: %s\n,errorMessage);}else{printf(插入数据成功\n);}ret sqlite3_exec(db, select * from Class;, \callback, SQL的内容, errorMessage); //执行SQL语句,查询数据if(ret ! SQLITE_OK){printf(SQL语句执行失败: %s\n,errorMessage);}else{printf(查询数据成功\n);}sqlite3_close(db); //关闭数据库文件printf(数据库关闭成功\n);return 0; } 五、SQLite数据库的其他编程操作 5.1 创建CREATE表 #include stdio.h #include sqlite3.hint callback(void *arg, int column_size, char *column_value[], char *column_name[]) //回调函数 {int i;printf(%s\n,(char *)arg); //打印SQL语句 for(i0; icolumn_size; i){printf(%s %s\n,column_name[i],column_value[i] ? column_value[i] : NULL); //打印每一列的值}printf(\n);return 0; }int main() {int ret;sqlite3 *db; // 定义数据库对象char *sql; // 定义sql语句char *errorMessage NULL; // 定义错误信息 ret sqlite3_open(test.db, db); // 打开数据库if(ret ! SQLITE_OK){ // 数据库打开失败printf(无法打开数据库: %s\n, sqlite3_errmsg(db));if(ret SQLITE_CANTOPEN){printf(数据库文件不存在或无法打开\n);}}else{ // 数据库打开成功printf(打开数据库成功\n);}/* Create SQL statement */sql CREATE TABLE COMPANY( \ID INT PRIMARY KEY NOT NULL, \NAME TEXT NOT NULL, \AGE INT NOT NULL, \ADDRESS CHAR(50), \SALARY REAL );;//sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)ret sqlite3_exec(db, sql, callback, SQL语句, errorMessage); // 执行sql语句if(ret ! SQLITE_OK){printf(无法创建表: %s\n, errorMessage);sqlite3_free(errorMessage); // 释放错误信息}else{printf(创建表成功\n);}sqlite3_close(db); // 关闭数据库 printf(关闭数据库成功\n);return 0; } 5.2 插入数据INSERT到创建的表中 下面的 C 代码段显示了如何在上面创建的 COMPANY 表中创建记录 #include stdio.h #include sqlite3.hint callback(void *arg, int column_size, char *column_value[], char *column_name[]) //回调函数 {int i;printf(%s\n,(char *)arg); //打印SQL语句 for(i0; icolumn_size; i){printf(%s %s\n,column_name[i],column_value[i] ? column_value[i] : NULL); //打印每一列的值}printf(\n);return 0; }int main() {int ret;sqlite3 *db; // 声明数据库对象char *sql; // 声明SQL语句char *errorMessage NULL; // 声明错误信息ret sqlite3_open(test.db, db); // 打开数据库 if(ret ! SQLITE_OK){ // 数据库打开失败printf(无法打开数据库: %s\n, sqlite3_errmsg(db));if(ret SQLITE_CANTOPEN){printf(数据库文件不存在或无法打开\n);}}else{ // 数据库打开成功printf(数据库已打开\n);}// 执行SQL语句sql INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \VALUES (1, Paul, 32, California, 20000.00 ); \INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \VALUES (2, Allen, 25, Texas, 15000.00 ); \INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \VALUES (3, Teddy, 23, Norway, 20000.00 ); \INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \VALUES (4, Mark, 25, Rich-Mond , 65000.00 );;//sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)ret sqlite3_exec(db, sql, callback, SQL语句, errorMessage); // 执行SQL语句if(ret ! SQLITE_OK){printf(SQL语句执行失败: %s\n, errorMessage);sqlite3_free(errorMessage); // 释放错误信息}else{printf(SQL语句执行成功\n);}sqlite3_close(db); // 关闭数据库printf(关闭数据库成功\n);return 0; } 5.3 查询数据SELECT操作 在我们开始讲解获取记录的实例之前让我们先了解下回调函数的一些细节这将在我们的实例使用到。这个回调提供了一个从 SELECT 语句获得结果的方式。它声明如下 typedef int (*sqlite3_callback)(void*, /* sqlite3_exec()的第四个参数传递的内容 */int, /* 列 */char**, /* 键值对的值 */char** /* 键值对的键 */ ); 面的回调在 sqlite_exec() 程序中作为第三个参数那么 SQLite 将为 SQL 参数内执行的每个SELECT 语句中处理的每个记录调用这个回调函数。下面的 C 代码段显示了如何从前面创建的 COMPANY 表中获取并显示记录 #include stdio.h #include sqlite3.hint callback(void *arg, int column_size, char *column_value[], char *column_name[]) //回调函数 {int i;printf(%s\n,(char *)arg); //打印SQL语句 for(i0; icolumn_size; i){printf(%s %s\n,column_name[i],column_value[i] ? column_value[i] : NULL); //打印每一列的值}printf(\n);return 0; }int main() {char ret;sqlite3 *db; //声明数据库对象char *sql SELECT * from COMPANY; //定义SQL语句char *errorMessage NULL; //声明错误信息指针ret sqlite3_open(test.db, db); //打开数据库 if(ret ! SQLITE_OK){ //判断是否打开成功printf(无法打开数据库: %s\n, sqlite3_errmsg(db));if(ret SQLITE_CANTOPEN){printf(数据库文件不存在或无法打开\n);}}else{ //数据库打开成功printf(数据库已打开\n);}//sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)ret sqlite3_exec(db, sql, callback, Callback function called, errorMessage); //执行SQL语句if(ret ! SQLITE_OK){printf(SQL语句执行失败: %s\n, errorMessage);sqlite3_free(errorMessage); //释放错误信息内存 }else{printf(SQL语句执行成功\n);} sqlite3_close(db); //关闭数据库 printf(数据库已关闭\n);return 0; } 5.4 更改数据UPDATE操作 下面的 C 代码段显示了如何使用 UPDATE 语句来更新任何记录然后从 COMPANY 表中获取并显示更新的记录 #include stdio.h #include sqlite3.hint callback(void *arg, int column_size, char *column_value[], char *column_name[]) //回调函数 {int i;printf(%s\n,(char *)arg); //打印SQL语句 for(i0; icolumn_size; i){printf(%s %s\n,column_name[i],column_value[i] ? column_value[i] : NULL); //打印每一列的值}printf(\n);return 0; }int main() {int ret;sqlite3 *db; // 声明数据库对象char *sql; // 声明SQL语句char *errorMessage NULL; // 声明错误信息ret sqlite3_open(test.db, db); // 打开数据库 if(ret ! SQLITE_OK){ // 数据库打开失败printf(无法打开数据库: %s\n, sqlite3_errmsg(db));if(ret SQLITE_CANTOPEN){printf(数据库文件不存在或无法打开\n);}}else{ // 数据库打开成功 printf(打开数据库成功\n);}// 执行SQL语句sql UPDATE COMPANY set SALARY 25000.00 where ID1; \SELECT * from COMPANY; // 查询语句//sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)ret sqlite3_exec(db, sql, callback, Callback function called, errorMessage); // 执行SQL语句if(ret ! SQLITE_OK){printf(SQL语句执行失败: %s\n, errorMessage);sqlite3_free(errorMessage); // 释放错误信息}else{printf(SQL语句执行成功\n);}sqlite3_close(db); // 关闭数据库printf(数据库关闭成功\n); return 0; } 5.5 删除数据DELETE操作 下面的 C 代码段显示了如何使用 DELETE 语句删除任何记录然后从 COMPANY 表中获取并显示剩余的记录 #include stdio.h #include sqlite3.hint callback(void *arg, int column_size, char *column_value[], char *column_name[]) // 回调函数 {int i;printf(%s\n, (char*)arg); // 打印回调函数参数 for(i0; icolumn_size; i){printf(%s %s\n,column_name[i], column_value[i] ? column_value[i] : NULL); // 打印每一列的值}printf(\n);return 0; }int main() {int ret;sqlite3 *db; // 声明数据库对象char *sql; // 声明SQL语句char *errorMessage NULL; // 声明错误信息ret sqlite3_open(test.db, db); // 打开数据库if(ret ! SQLITE_OK){ // 数据库打开失败printf(无法打开数据库: %s\n, sqlite3_errmsg(db));if(ret SQLITE_CANTOPEN){printf(数据库文件不存在或无法打开\n);}}else{ // 数据库打开成功printf(数据库打开成功\n);}// 执行SQL语句sql DELETE from COMPANY where ID2; \SELECT * from COMPANY; //sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg) ret sqlite3_exec(db, sql, callback, Callback function called, errorMessage); // 执行SQL语句if(ret ! SQLITE_OK){printf(SQL语句执行失败: %s\n, errorMessage);sqlite3_free(errorMessage); // 释放错误信息}else{printf(SQL语句执行成功\n);} sqlite3_close(db); // 关闭数据库printf(数据库关闭成功\n);return 0; }
http://www.pierceye.com/news/181686/

相关文章:

  • 网站开发免责合同东莞营销型网站建设公司
  • 网站建设维护培训班网站排名系统
  • 深圳语种网站建设石家庄企业网站建设
  • 长春企业公司网站建设湖北省住房和城乡建设厅门户网站
  • 网站主机名是什么在小说网站做责编
  • 网站建设基本流程信息技术建筑网站设置工资单人换了怎么换
  • 建设银行查余额网站诚信经营网站的建设
  • 平台型网站建设公司最近发生的重大军事新闻
  • 分享惠网站怎么做旅游网站网页设计模板代码
  • 2018年做网站赚钱那些网站做的非常好看的
  • 兰州网站建设哪家专业wordpress耗时
  • 手机网站解析域名网站那个做的比较好
  • 上海专业网站建设公司电话企业营销网站建设的基本步骤
  • 中国专业的网站建设知乎wordpress
  • 广州网站设计公司兴田德润活动这是我做的网站吗
  • html5做网站一线全屋定制10大品牌
  • 广州百度网站建设公司wordpress免费媒体库管理
  • 郑州网站建设炉石在线a视频网站一级a做片
  • 网站越来越难做做杂志的模板下载网站有哪些
  • 怎么做化妆品网站内容规划免费做网站的网页
  • seo站外优化平台网站建设程序流程
  • 凡科轻站官网做个简单的企业小网站
  • 动漫做h免费网站有哪些系统开发是做什么的
  • 企业做网站流程全国地推公司排名
  • 揭阳新闻最新消息常用的seo工具推荐
  • 网站方案策划中国最大的博客网站
  • 网站建设加空间食品包装设计ppt
  • 搭建一个网站 优帮云张家口远大建设集团网站
  • wordpress本地视频播放器苏州谷歌seo
  • 银川网站建设有哪些16岁做分期网站