Sqlite3查询时出现的有关问题
Sqlite3查询时出现的问题
链接数据库,应该没问题
我的总是查询不到,但是用网上下的查询工具就能查到。返回值总是SQLITE_DONE 不是理论上应该返回的SQLITE_ROW
有没有大神帮帮忙,解决下我出现的问题
------解决思路----------------------
我看你的SQL语句没有使用UTF-8,而且数据库路径不严谨。
SQLLITE3整体上都使用UTF-8,所以:
数据库路径要使用全路径,而且要转为UTF-8格式,不然遇到中文就会出问题。
SQL语句、可能含有中文的字符字段,都需要转成UTF-8。
我使用的是 sqlite3_exec,没用过sqlite3_prepare_v2,不过我看注释说明,使用的也是UTF-8或UTF-16。
------解决思路----------------------
数据库先使用绝对路径
if(NULL == pSql)
sqlite3_open(("123.db"),&pSql);
链接数据库,应该没问题
char *msg = ("select name from sqlite_master where type='table' order by name;");
const char *tail;
sqlite3_stmt *pStmt = NULL;
int ret = 0 ;
if( SQLITE_ERROR == sqlite3_prepare_v2(pSql,msg,strlen(msg),&pStmt,&tail))
{
MessageBox(_T("Msg Error")); //语句错误
return;
}
else if(SQLITE_DONE == sqlite3_step(pStmt))
{
MessageBox(_T("Select Error")); //查询错误或查询内容不存在
return;
}
CString str_msgget;
int i = 0;
do
{
for(int i = 0 ;i < sqlite3_column_count(pStmt); i++)
{
if(0 == sqlite3_column_bytes16( pStmt, i )) return;
str_msgget += (TCHAR*)sqlite3_column_text16(pStmt,i);
}
str_msgget += _T("||\n");
}while(SQLITE_DONE != sqlite3_step(pStmt));
我的总是查询不到,但是用网上下的查询工具就能查到。返回值总是SQLITE_DONE 不是理论上应该返回的SQLITE_ROW
有没有大神帮帮忙,解决下我出现的问题
------解决思路----------------------
我看你的SQL语句没有使用UTF-8,而且数据库路径不严谨。
SQLLITE3整体上都使用UTF-8,所以:
数据库路径要使用全路径,而且要转为UTF-8格式,不然遇到中文就会出问题。
SQL语句、可能含有中文的字符字段,都需要转成UTF-8。
我使用的是 sqlite3_exec,没用过sqlite3_prepare_v2,不过我看注释说明,使用的也是UTF-8或UTF-16。
------解决思路----------------------
数据库先使用绝对路径