日期:2014-05-17  浏览次数:20445 次

SQLite 查询问题 卡住两天了,急!
本帖最后由 liangyuegang 于 2013-11-24 16:01:10 编辑
1、创建数据库(11列)
createTableSQL ="CREATE TABLE  IF NOT EXISTS MAPDATATABLE (NAME TEXT,TYPE TEXT COLLATE NOCASE,SCAL TEXT,COR_X TEXT,COR_Y TEXT,UPLOADTIME TEXT,LASTMODIFYTIME TEXT,STORAGEDIR TEXT,BACKUPDIR TEXT,PRJNAME TEXT, AUTHORNAME TEXT,UNIQUE(NAME,TYPE))";
2、批量插入数据
const char* beginSQL = "BEGIN TRANSACTION";
const char* insertSQL = "INSERT INTO MAPDATATABLE VALUES (?,?,?,?,?,?,?,?,?,?,?)";
const char* commitSQL = "COMMIT";
3、查询(多条件任意组合 查询)
char querysql[1024]="SELECT * FROM MAPDATATABLE WHERE";
const char *namesql=" NAME='%s' AND";
const char *typesql=" TYPE='%s' AND";
const char *scalesql=" SCAL='%s' AND";
const char *ultimesql=" UPLOADTIME='%s' AND";
const char *lmtimesql=" LASTMODIFYTIME='%s' AND";
const char *prjnamesql=" PRJNAME='%s' AND";
const char *authornamesql=" AUTHORNAME='%s' AND";
int len=strlen(querysql);
querysql[len-1]=querysql[len-2]=querysql[len-3]='\0';//去掉多余的“AND”
sqlite3_prepare_v2(conn,querysql,len-3,&stmt,NULL)
result=sqlite3_step(stmt)
界面如下:
问题如下:条件任意组合进行查询 都没有问题

除了条件AUTHORNAME 即最后一个,调试跟踪后发现查询语句没问题querysql,sqlite3_prepare_v2()运行结果也没有问题,问题出在sqlite3_step(),其返回值为SQLITE_DONE,即没有查询到结果,但数据库中明明有这组记录,恳请各位高手指导下,初次使用SQLite,编程水平也很有限,这个问题自己真的不知道出在哪儿,先谢谢了!
SQLite? sqlite3_step()查询不到结果 SELECT?查询问题

------解决方案--------------------
你能够把查询sql语句连接后先打印出来吗?分析数据结合你的sql语句就知道为何应该出来的语句没有出来?
------解决方案--------------------
可能是阻塞问题,你把上面的语句改一下,加一个with(nolock)试试:

SELECT * FROM MAPDATATABLE with(nolock) WHERE...