1.所用数据库为sqlite3
2.网上搜索很多资料实在搜索不到,初用sqlite3,希望各位指点
3.希望能给出完整答案,在本站也看到问类似问题,但是回答的语言不统一, 还有很多变量、指针的来源我实在弄不清楚
例如:sqlite3_get_table(m_pDB, "SELECT * FROM T_STUDENT", &azResult, &nRow, &nColumn, &lpszErrMsg);这样的语句
因为sqlite3本身定义很多宏,我不知道如何用 只知道SQL语句不知道 如何应用到sqlite3上很苦恼
所用语言为C/C++
23 个解决方案
#1
sqlite3是马上东西。。。楼下帮忙解释。。
偶去GG学习一下先
偶去GG学习一下先
#2
学习
#3
sqlite3 是?
不懂
不懂
#4
up
#5
额 就是SQLite 打错了
#6
语句混淆 有点蒙 查了几个小时资料
#7
是SQLite
#8
不懂,什么东西?帮顶.
#9
没错啊 是这个名字啊 - -很意外么
#10
基于 SQL 的 小型轻量级数据库
#11
主要是没听说过
#12
你需要用回调函数!
参考一下帮助文档中的这个例子。
参考一下帮助文档中的这个例子。
#include <stdio.h>
#include <sqlite3.h>
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
int i;
for(i=0; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
int main(int argc, char **argv){
sqlite3 *db;
char *zErrMsg = 0;
int rc;
if( argc!=3 ){
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
exit(1);
}
rc = sqlite3_open(argv[1], &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}
#13
这个回调 函数 做什么的呢? 没明白 为什么必须用回调函数 如果我能看懂我就不问了我直接看源码
它的注释率很高 心急 。不用回调不能实现么?
#14
建议不用,用处不大.
#15
我做mobile的,大数据库反而不实用,现在是学习阶段 - - 正做项目 遇到难题了
#16
这个数据库 很出名的 windows上 也有用 因为很小 算法经典 注释率也高 ,小型的设备也经常用 - - ,我闪了, 用另种方法做。
#17
不用回调,那就用打开记录集的方法吧
#18
SQLite提供的这个接口函数
sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
中你需要把你自己的处理函数告诉它 比如例子中的 static int callback(void *NotUsed, int argc, char **argv, char **azColName)
然后sqlite3_exec会对得到的查询结果中的每一行来调用这个 callback 函数。
你的 select count(*) 也是同样处理。你需要写一个callback函数,在这个callback函数中你可以把 count(*) 的返回值赋个某个公共变量然后再做下一步处理。
#19
回答 的不清晰 - - 我需要的是清晰答案 说含糊的词语我也会 结贴
#20
我也遇到同样的问题,很明白你的感受,确实回答的很含糊,不知道你现在解决了没?
我也是边做项目边学的,遇到很多障碍。
我也是边做项目边学的,遇到很多障碍。
#21
额已经根据逻辑 自己拟了一个函数 曲线救国。。
#22
别人说的很清楚了,用回调函数,连例子都有,代码都是现成的。
你自已试下就知道了。还要说别人讲得不明白。
你自已试下就知道了。还要说别人讲得不明白。
#23
对当时的我来说是很困难的,我希望的是一个接口或者 一条语句, 你告诉我回调,我甚至回调是什么都不知道。
#1
sqlite3是马上东西。。。楼下帮忙解释。。
偶去GG学习一下先
偶去GG学习一下先
#2
学习
#3
sqlite3 是?
不懂
不懂
#4
up
#5
额 就是SQLite 打错了
#6
语句混淆 有点蒙 查了几个小时资料
#7
是SQLite
#8
不懂,什么东西?帮顶.
#9
没错啊 是这个名字啊 - -很意外么
#10
基于 SQL 的 小型轻量级数据库
#11
主要是没听说过
#12
你需要用回调函数!
参考一下帮助文档中的这个例子。
参考一下帮助文档中的这个例子。
#include <stdio.h>
#include <sqlite3.h>
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
int i;
for(i=0; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
int main(int argc, char **argv){
sqlite3 *db;
char *zErrMsg = 0;
int rc;
if( argc!=3 ){
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
exit(1);
}
rc = sqlite3_open(argv[1], &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}
#13
这个回调 函数 做什么的呢? 没明白 为什么必须用回调函数 如果我能看懂我就不问了我直接看源码
它的注释率很高 心急 。不用回调不能实现么?
#14
建议不用,用处不大.
#15
我做mobile的,大数据库反而不实用,现在是学习阶段 - - 正做项目 遇到难题了
#16
这个数据库 很出名的 windows上 也有用 因为很小 算法经典 注释率也高 ,小型的设备也经常用 - - ,我闪了, 用另种方法做。
#17
不用回调,那就用打开记录集的方法吧
#18
SQLite提供的这个接口函数
sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
中你需要把你自己的处理函数告诉它 比如例子中的 static int callback(void *NotUsed, int argc, char **argv, char **azColName)
然后sqlite3_exec会对得到的查询结果中的每一行来调用这个 callback 函数。
你的 select count(*) 也是同样处理。你需要写一个callback函数,在这个callback函数中你可以把 count(*) 的返回值赋个某个公共变量然后再做下一步处理。
#19
回答 的不清晰 - - 我需要的是清晰答案 说含糊的词语我也会 结贴
#20
我也遇到同样的问题,很明白你的感受,确实回答的很含糊,不知道你现在解决了没?
我也是边做项目边学的,遇到很多障碍。
我也是边做项目边学的,遇到很多障碍。
#21
额已经根据逻辑 自己拟了一个函数 曲线救国。。
#22
别人说的很清楚了,用回调函数,连例子都有,代码都是现成的。
你自已试下就知道了。还要说别人讲得不明白。
你自已试下就知道了。还要说别人讲得不明白。
#23
对当时的我来说是很困难的,我希望的是一个接口或者 一条语句, 你告诉我回调,我甚至回调是什么都不知道。