我有这个C ++函数,用于检查给定名称是否存在。但是每次它返回false,即使给定的名称已经存在。我哪里做错了?
bool Database::hasRepository(std::string repoName)
{
string sql = "SELECT * FROM repository WHERE NAME='";
sql += repoName + "'";
sqlite3_stmt* selectStmt = nullptr;
sqlite3_prepare_v2(connection, sql.c_str(), sql.size(), &selectStmt, NULL);
int results = sqlite3_step(selectStmt);
sqlite3_finalize(selectStmt);
if(results == SQLITE_ROW)
return true;
else
return false;
}
答案 0 :(得分:4)
您应该检查可能返回错误指示的所有函数的返回值。例如,如果语句有语法错误,sqlite3_prepare_v2
将返回错误代码。
这可能告诉你,你提供的陈述不正确(如果是)。
您可以使用sqlite3_errmsg
和sqlite3_errstr
生成更易读的错误消息。抛弃有关错误的特定信息绝不是一个好主意,例如只返回false,特别是在调试期间。