sqlite3_get_table()

sqlite3_get_table(),第1张

概述{  sqlite3 *db;  char *errmsg=NULL;    //用来存储错误信息字符串  char ret=0;  int my_age=0;    //类型根据要提取的数据类型而定  char **dbResult;  int nRow=0, nColumn=0;     //nRow 查找出的总行数,nColumn 存储列  ret = sqlite3_open("stude {
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可引用。
deeBUG20130521 From:http://blog.chinaunix.net/uID-26520343-ID-3064257.HTML

总结

以上是内存溢出为你收集整理的sqlite3_get_table()全部内容,希望文章能够帮你解决sqlite3_get_table()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1171137.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存