c ++在SQLite db

时间:2015-05-18 18:19:07

标签: c++ qt visual-studio-2012 sqlite

我的程序使用SQLite3 lib打开并执行一些查询到本地数据库。 这是我用来执行查询的函数(显示错误):

void exec(string query, string place_error){
    if( sqlite3_exec(sqldb,query.c_str(),0,0,&db_err) != SQLITE_OK) 
        sql_error(place_error+" - "+(string)db_err);
}

现在,如果我尝试执行类似的事情:

exec("INSERT INTO table (testTable) VALUES('ççç')","Insert_Error");

它会存储这样的符号<。

如果我运行sqlite3 shell并执行这个exacly相同的查询它将无法工作,因为它将存储奇怪的字符。

我可以存储像“ç”或“á,é”这样的字符的唯一方法是使用SQLiteStudio,但这不是我需要的,甚至不是sqlite3 shell。我只需要这个来处理我的代码。

DB默认为UTF-8编码,所以我应该在查询中添加任何特殊声明吗?或者问题只是其他问题。

由于

PS:我在我的程序中也使用QT库。我需要存储的所有信息通常都转换为utf8(使用.toUtf8()。constData())。我确保在exec()参数上收到查询时是正确的,并且所有特殊字符都是正确的。

1 个答案:

答案 0 :(得分:0)

虽然当您尝试存储“ç”或“á”等字符时,它似乎是错误的字符,但这些字符“很好”。如果我创建一个函数(SELECT)将列文本返回到字符串,它就可以工作。如果你像我一样使用QT,你只需要将返回字符串放在函数

QString::fromLatin1(returned_string.c_str());

一切都会好起来的。