加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C语言使用sqlite3数据库【第三节】_0

发布时间:2020-12-12 19:24:52 所属栏目:百科 来源:网络整理
导读:int sqlite3_get_table( sqlite3 *db,/* 数据库句柄 */ const char *zSql,/* SQL 语句 */ char ***pazResult,/* 查询结果 一大堆的一维数组*/ int *pnRow,/* 记录条数 也就是多少行*/ int *pnColumn,/* 字段数 也就是多少列 不过数据也是根据这个来定位的 例

# include <stdio.h>
# include "sqlite3.h"
# include <stdlib.h>
int main(void)
{
int i;
int j;
sqlite3 *db;//建立一个sqlite3类型的指针db!可以当做数据库的操作句柄。
//没有这个句柄那么所有的sqlite3函数都没有任何实际意义
const char *SQL1="insert into sjk values(1,'myd','2013-10-9');";//将SQL语句赋值在变量里!
const char *SQL2="insert into sjk values(2,'2013-10-9');";//SQL语句我就不多说了。
//从数据库查询数据
const char *SQL3="select * from sjk;";//这里是重点我们在最下面可以看到回调函数的用法!
char *errmsg=0;
char** pResult;
int nRow;
int nCol;
int Feedback = sqlite3_open("sqlite3.db",&db);
//打开指定的数据库文件,如果不存在将创建一个同名的数据库文件,并返回给db句柄值。
if( Feedback != SQLITE_OK )
{
printf("没有打开名为:sqlite3.db 的数据库n 原因是:%sn",sqlite3_errmsg(db));
system("pause");
//sqlite3_errmsg()是返回错误后的提示信息!参数是数据库的操作句柄。
sqlite3_close(db);
//sqlite3_close()是关闭指定数据库句柄的数据库!
exit(-1);//非正常退出!
}
else printf("成功打开或成功创建 名为:sqlite3.db !n");
sqlite3_exec(db,"create table sjk(id integer,name text,birthday blob)",&errmsg);//创建表
sqlite3_exec(db,SQL1,&errmsg);//插入数据1
sqlite3_exec(db,SQL2,&errmsg);//插入数据2
printf("插入数据成功n");
Feedback = sqlite3_get_table(db,SQL3,&pResult,&nRow,&nCol,&errmsg);//查询数据将数据返回到&pResult
int nIndex = nCol; //在这篇文章开始之前我就做过注释解析,请查看,然后分析为什么这么做?
printf("共有%d列/n",nIndex);//查出默认字段数相当于列数
for(i=0;i<nRow;i++)//查询第几行的循环
{
for(j=0;j<nCol;j++)//查询一行里面的数据循环
{
printf("%s=%sn",pResult[j],pResult[nIndex]);
++nIndex;//定位下一个数据,以便于字段名符合!
}
}
sqlite3_free_table(pResult);//释放内存
sqlite3_close(db);//关闭数据库
db = 0;//清除数据库句柄
printf("数据库关闭成功!n");
system("pause");//暂停DOS以便于查看
return 0;
}

那么本教程的基础篇就在这里告一段落!
然而有一些人问我,说为什么从第二节课开始我就一直用源代码和注释为大家讲解呢?
也不是夸大家,我问问你,如果你没有学会SQL语句还会考虑sqlite应用于哪个平台?
如果你不会C语言,那么你还会用C语言来操作sqlite吗?所以很多基础的问题我就不给大家讲解了。
那么下一章,我将为大家讲解中级篇。来用它做一些DOS文字游戏!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

int sqlite3_get_table( sqlite3 *db,/* 数据库句柄 */ const char *zSql,/* SQL 语句 */ char ***pazResult,/* 查询结果 一大堆的一维数组*/ int *pnRow,/* 记录条数 也就是多少行*/ int *pnColumn,/* 字段数 也就是多少列 不过数据也是根据这个来定位的 例如:第一行:1,2,3 那么这个数值默认就是3,因为第一行是字段名,取的自然是列数,那么怎么取各个数据的位 置呢?答:从下一行开始 例如 4 就是第一个数据了,然后依次从左向右的移动,数值发生改变,形成了数据定位!个人理解,大神勿喷!*/ char **pzErrmsg /* 错误信息 跟前面errmsg一样 */ ); sqlite3_free_table(char **result);//释放查询的缓存

那么大家请看以下的源码注释:
    推荐文章
      热点阅读