我有一个函数包含这个代码,当我第一次调用这个函数时,它会给出结果,但之后我每次调用它都没有结果返回。我需要解决这个问题。
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;
提前谢谢!
答案 0 :(得分:0)
通过减少关闭和重新打开数据库来解决问题。我也用过
sqlite3_open_v2(path.c_str(), pDB, SQLITE_OPEN_READWRITE, NULL);
开放和
sqlite3_open_v2(path.c_str(), pDB, SQLITE_OPEN_CREATE, NULL);
在执行开始时