SQLite CREATE TABLE 和 INSERT 工作,但返回SQLITE_ERROR "no such table" C++

SQLite CREATE TABLE and INSERT work, but return SQLITE_ERROR "no such table" C++

本文关键字:ERROR no such C++ table SQLITE 返回 TABLE CREATE INSERT 工作      更新时间:2023-10-16

所以这是我第一次在C++中尝试SQLite,我已经完成了所有工作,但它抛出了SQLite_ERROR-"没有这样的表:(表名)"错误。我不知道发生了什么——当我创建一个表时,它不应该抛出这些错误,对吧?我很清楚这个表不存在,这就是我创建它的原因…

处理程序对象有一个fn。如果表不存在,则创建模式:

result = handler->createSchema();

哪个调用:

bool SQLiteHandler::createSchema()
{
if(!isValid())
{
return false;
}
if(schemaExists())
{
return false;
}
//Create necessary table(s)
std::string query = "CREATE TABLE symbols (id INTEGER PRIMARY KEY AUTOINCREMENT, ticker, last_update, daily_data, minute_data, tick_data);";
dbConn->executeQuery(query);
if(dbConn->getStatus() == DatabaseConnector::DBC_SQL_ERROR)
{
return false;
}
return true;
}

哪个调用(executeQuery(query)):

void SQLiteDBConnector::executeQuery(const std::string Query)
{
if(!isConnected())
{
return;
}
//Execute Query
char* sqlError = 0;
int rc = sqlite3_exec(db, Query.c_str(), NULL, NULL, &sqlError);
if(rc != SQLITE_OK)
{
//Error
std::string err = "[SQLite Error]: ";
err += std::string(sqlError);
setStatus(DBC_SQL_ERROR, err);
}
sqlite3_free(sqlError);
}

有什么想法吗?

问题出在这里,与SQLite无关,只是我犯了一个愚蠢的错误。当出现错误时,我正在更新状态,但当某件事成功时,我没有更新,所以如果出现错误,它就会挂起。我不完全确定是什么触发了第一个错误,但通过更改这个:

if(rc != SQLITE_OK)
{
//Error
std::string err = "[SQLite Error]: ";
err += std::string(sqlError);
setStatus(DBC_SQL_ERROR, err);
}

类似的东西:

if(rc != SQLITE_OK)
{
//Error
std::string err = "[SQLite Error]: ";
err += std::string(sqlError);
setStatus(DBC_SQL_ERROR, err);
}
else
{
setStatus(DBC_CONNECTED);
}

它起作用了。我真是太愚蠢了:P