C++ SQLite 查询只工作一次。我的代码有什么问题?
C++ SQLite query works just once. What's wrong with my code?
我有一个函数女巫包含此代码,当我第一次调用此函数时,它会给出结果,但此后每次调用它都没有结果返回。我需要解决这个问题。
char query[150];
sprintf(query, "SELECT building, inner, level, position, village FROM Builds WHERE village=%d AND inner=%d", villageId, side);
std::string path=FileUtils::getInstance()->getWritablePath() + "data.db3";
sqlite3 *pDB;
int result = sqlite3_open(path.c_str(), &pDB);
sqlite3_stmt *selectStmt;
sqlite3_prepare(pDB, query, -1, &selectStmt, NULL);
std::list<Build> buildings;
// get data
while (1) {
int s;
s = sqlite3_step(selectStmt);
if (s == SQLITE_ROW) {
Build building;
building.building = sqlite3_column_int(selectStmt, 0);
building.inner = sqlite3_column_int(selectStmt, 1);
building.level = sqlite3_column_int(selectStmt, 2);
building.position = sqlite3_column_int(selectStmt, 3);
building.village = sqlite3_column_int(selectStmt, 4);
buildings.push_back(building);
}
else {
break;
}
}
// clode database
sqlite3_finalize(selectStmt);
sqlite3_close(pDB);
// return data
return buildings;
提前谢谢你!
通过减少关闭和重新打开数据库来修复。我也用了
sqlite3_open_v2(path.c_str(), pDB, SQLITE_OPEN_READWRITE, NULL);
用于打开和
sqlite3_open_v2(path.c_str(), pDB, SQLITE_OPEN_CREATE, NULL);
在执行开始时
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 我的字符计数代码计算错误.为什么
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 0-1背包代码中的错误.我的代码中有什么错误
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- 在我的代码中,获得最大的Pair Wise产品C++和输出并不总是正确的
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 为什么我的C++代码中出现'Segmentation Fault: 11'行?
- 是否值得降低我的代码的可读性,以便在出现内存不足错误时提供异常安全性?
- 为什么我的C++程序的程序集输出充满了 .ascii,没有汇编代码?
- 无法在我的堆排序代码中找到错误.无法正确执行.C++
- 如何重写全局方法名称以在调用原始方法之前将我的代码推到前面
- 为什么我的 BaseClass:Method 代码编译(带有单冒号)?
- 我的代码运行良好,但在游戏循环中中断
- 8谜题代码.我的队列没有填充,我找不到错误的位置