linux 下sqlite的 C编程之sqlite3_get_table
来源:互联网 发布:网络机柜理线路图 编辑:程序博客网 时间:2024/06/06 10:45
{ sqlite3 *db; char *errmsg=NULL; //用来存储错误信息字符串 char ret=0; int my_age=0; //类型根据要提取的数据类型而定 char **dbResult; int nRow=0, nColumn=0; //nRow 查找出的总行数,nColumn 存储列 ret = sqlite3_open("student.db",&db); if(1 == ret) //数据库创建未成功 { fprintf(stderr, "Can't open this database: %s\n", sqlite3_errmsg(db)); //用sqlite3_errmsg()得到错误字符串 sqlite3_close(db); return -1; } ret=sqlite3_get_table(db, "select * from age;", &dbResult, &nRow, &nColumn, &errmsg); if(NULL!=errmsg) { sqlite3_free_table(dbResult); errmsg=NULL; return -1 } my_age = atoi(dbResult[nColumn]); sqlite3_free_table(dbResult); return 0; }
sqlite3 *db创建数据库类型的指针,通过sqlite3_open()函数使db指针指向该数据库。
注意:
1、 char **dbResult; 字符型的二重指针,将数据库里sqlite3_get_table()出来的数据以字符的方式给dbResult。
2、select * from age;查询student数据库里的age表全部内容。
3、my_age = atoi(dbResult[nColumn]);将查询出来给dbResult的数据(字符)通过aoti()转换成整型交给变量my_age供程序中直接应用。
重点:(假设age表里有n个字段)
1、通过select * from age;给dbResult的字符前n个(0,n)为字段名称(只有计算机认识),dbResult[n]以后分别代表字段的值(包括dbResult[n])。如图
* * * * .........* (dbResult[0]~[n-1]分别代表字段名)
dbResult[n] [n+1] [n+2] [n+3].....[n+n-1] (dbResult[n]~[n+n-1]分别代表第一条记录的值)
dbResult[2n] [2n+1] [2n+2] [2n+3]....[2n+n-1](dbResult[2n]~[2n+n-1]分别代表第二条记录的值)
dbResult[3n] [3n+1] [3n+2] 32n+3]....[3n+n-1](dbResult[3n]~[3n+n-1]分别代表第三条记录的值)
注:sqlite3_get_table()之后便将以上的n(字段数:简称列)给了nColumn这个变量,可直接应用。nRow变量代表共有多少条记录,可直接应用。
2、通过select * from age where id=0;如果查到0条记录的话nRow等于0,查到1条记录的话nRow等于1,假设查到1条数据,举例:
* * * * .........* (dbResult[0]~[n-1]分别代表字段名)
dbResult[n] [n+1] [n+2] [n+3].....[n+n-1] (dbResult[n]~[n+n-1]分别代表第一条记录的值)
注:此时dbResult[]只有0~2n-1共2n个字符,此时如果对dbResult[2n]引用的话就会出错。查询两条语句的话以此类推。
* * * * .........* (dbResult[0]~[n-1]分别代表字段名)
dbResult[n] [n+1] [n+2] [n+3].....[n+n-1] (dbResult[n]~[n+n-1]分别代表第一条记录的值)
dbResult[2n] [2n+1] [2n+2] [2n+3]....[2n+n-1](dbResult[2n]~[2n+n-1]分别代表第二条记录的值)
注:此时dbResult[]只有0~3n-1可引用。
- linux 下sqlite的 C编程之sqlite3_get_table
- 嵌入式 linux下sqlite的C编程之sqlite3_get_table
- linux 下sqlite的 C编程之sqlite3_get_table
- linux下sqlite数据库用c语言sqlite3_get_table查询数据
- Linux c==sqlite的sqlite3_get_table(37)
- sqlite C++ 的sqlite3_get_table函数使用
- Linux下的C编程实战之文件系统编程
- Linux下的C编程实战之文件系统编程
- Linux下的C编程实战之文件系统编程
- Linux下的C编程实战之文件系统编程
- Linux下的C编程实战之文件系统编程
- Linux下的C编程实战之文件系统编程
- Linux下的C编程实战之文件系统编程 收藏
- Linux下的C编程实战之文件系统编程
- Linux下的C编程实战之文件系统编程
- Linux下的C编程实战之文件系统编程
- linux下C编程之文件系统编程
- Linux下的C编程实战之开发平台搭建
- 使用input标签 type='file' 上传图片的问题
- Cocos2dx报错undefined reference to 'cocos2d::Sprite::setDisplayFrameWithAnimationName(std::__1::basic
- 专题1:裸机开发快速体验+交叉工具链
- 静态类加载过程、对象的创建过程
- swift语言的学习笔记二(可选类型?和隐式可选类型!)
- linux 下sqlite的 C编程之sqlite3_get_table
- dubbo学习笔记 八 dubbo-common
- pig-0.11.1安装安装部署
- swoole深入学习 1. swoole初始
- 1015. 德才论 (25)
- Android 数据存储ContentProvider(类容提供者)之对外提供数据修改
- 基于opencv视频中运动目标标定
- dubbo学习笔记 九 dubbo-common之动态扩展extension
- swift语言的学习笔记三(闭包-匿名函数)