Sqlite3查询时出现的有关问题

Sqlite3查询时出现的问题
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。
------解决思路----------------------
数据库先使用绝对路径