sqlite3 中使用 SELECT COUNT(*)的问题

myndsc2009 2009-11-30 10:18:56
想用 SELECT COUNT(*) AS AAAA FROM TAB1 去判断表是否是空值,SQL语句我会写但是 不知道如何使用去拿到值

1.所用数据库为sqlite3
2.网上搜索很多资料实在搜索不到,初用sqlite3,希望各位指点
3.希望能给出完整答案,在本站也看到问类似问题,但是回答的语言不统一, 还有很多变量、指针的来源我实在弄不清楚

例如:sqlite3_get_table(m_pDB, "SELECT * FROM T_STUDENT", &azResult, &nRow, &nColumn, &lpszErrMsg);这样的语句

因为sqlite3本身定义很多宏,我不知道如何用 只知道SQL语句不知道 如何应用到sqlite3上很苦恼

所用语言为C/C++

...全文
4454 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
myndsc2009 2010-11-22
  • 打赏
  • 举报
回复
对当时的我来说是很困难的,我希望的是一个接口或者 一条语句, 你告诉我回调,我甚至回调是什么都不知道。
cdqy 2010-10-29
  • 打赏
  • 举报
回复
别人说的很清楚了,用回调函数,连例子都有,代码都是现成的。
你自已试下就知道了。还要说别人讲得不明白。
myndsc2009 2010-08-26
  • 打赏
  • 举报
回复
额已经根据逻辑 自己拟了一个函数 曲线救国。。
豌豆苗 2010-08-09
  • 打赏
  • 举报
回复
我也遇到同样的问题,很明白你的感受,确实回答的很含糊,不知道你现在解决了没?
我也是边做项目边学的,遇到很多障碍。
myndsc2009 2009-12-02
  • 打赏
  • 举报
回复
回答 的不清晰 - - 我需要的是清晰答案 说含糊的词语我也会 结贴
ACMAIN_CHM 2009-12-01
  • 打赏
  • 举报
回复
[Quote]这个回调 函数 做什么的呢? 没明白 为什么必须用回调函数 如果我能看懂我就不问了我直接看源码[/Quote]

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(*) 的返回值赋个某个公共变量然后再做下一步处理。
WWWWA 2009-12-01
  • 打赏
  • 举报
回复
不用回调,那就用打开记录集的方法吧
myndsc2009 2009-11-30
  • 打赏
  • 举报
回复
这个数据库 很出名的 windows上 也有用 因为很小 算法经典 注释率也高 ,小型的设备也经常用 - - ,我闪了, 用另种方法做。
myndsc2009 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 dawugui 的回复:]
引用 10 楼 myndsc2009 的回复:
基于 SQL 的 小型轻量级数据库

建议不用,用处不大.
[/Quote]
我做mobile的,大数据库反而不实用,现在是学习阶段 - - 正做项目 遇到难题了
dawugui 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 myndsc2009 的回复:]
基于 SQL 的 小型轻量级数据库
[/Quote]
建议不用,用处不大.
myndsc2009 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 acmain_chm 的回复:]
你需要用回调函数!

参考一下帮助文档中的这个例子。

C/C++ code#include<stdio.h>
#include<sqlite3.h>staticint 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");return0;
}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);return0;
}


[/Quote]
这个回调 函数 做什么的呢? 没明白 为什么必须用回调函数 如果我能看懂我就不问了我直接看源码
它的注释率很高 心急 。不用回调不能实现么?
ACMAIN_CHM 2009-11-30
  • 打赏
  • 举报
回复
你需要用回调函数!

参考一下帮助文档中的这个例子。

#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;
}


bancxc 2009-11-30
  • 打赏
  • 举报
回复
主要是没听说过
myndsc2009 2009-11-30
  • 打赏
  • 举报
回复
基于 SQL 的 小型轻量级数据库
myndsc2009 2009-11-30
  • 打赏
  • 举报
回复
没错啊 是这个名字啊 - -很意外么
dawugui 2009-11-30
  • 打赏
  • 举报
回复
不懂,什么东西?帮顶.
myndsc2009 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 js_szy 的回复:]
sqlite3 是?


不懂
[/Quote]

是SQLite
myndsc2009 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fredrickhu 的回复:]
学习
[/Quote]

语句混淆 有点蒙 查了几个小时资料
myndsc2009 2009-11-30
  • 打赏
  • 举报
回复
额 就是SQLite 打错了
bancxc 2009-11-30
  • 打赏
  • 举报
回复
up[Quote=引用 3 楼 js_szy 的回复:]
sqlite3 是?


不懂
[/Quote]
加载更多回复(3)

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧