繁体   English   中英

sqlite3_step()似乎不起作用

[英]sqlite3_step() doesn't seem to work

我有这个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;
}

您应该检查所有可能返回错误指示的函数的返回值。 例如,如果语句存在语法错误,则sqlite3_prepare_v2将返回错误代码。

那可能已经告诉您,您提供的语句不正确(如果正确)。

您可以使用sqlite3_errmsgsqlite3_errstr生成更具可读性的错误消息。 仅丢弃有关错误的特定信息(例如仅通过返回false尤其是在调试过程中)就永远不是一个好主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM