急救啊~~~ 关于查询sqlite数据库的问题
yeefa 2011-02-23 05:33:36 我现在在用C++查询sqlite数据库,运行到
if(sqlite3_prepare16(con.db, sql,-1, &this->stmt, (const void**)&tail)!=SQLITE_OK)就出错了,但错误的原因找不出来
cSql=L"SELECT * FROM t_province";
//cSql=L"SELECT * FROM T_AREA";
这里有两个语句,用第二个的时候查询就没有问题
但用第一个就报错了
在sqlite的查询分析器里面查询是没有问题的
两个表的表结构如下:
T_AREA
--------------------
区号 名称(中) 名称(繁体) 名称(英)
-------------------------------------
t_province
编号 名称(中) 名称(繁体) 名称(英)
---------------------------------------
源码:
[code=C]/C++
CString GetProvinceList(int SysVersion)
{
CString cSql;
CString cResult;
wstring Name;
sqlite3_reader rd;
cResult.Append(L"<Results>");
if (SysVersion==3)
{
cResult.Append(L"<Result Name='**ALL**' />");
}
else
{
cResult.Append(L"<Result Name='**全部**' />");
}
cSql=L"SELECT * FROM t_province";
//cSql=L"SELECT * FROM T_AREA";
try
{
sqlite3_connection con(dbFile);
sqlite3_command cmd(con,cSql);
rd=cmd.executereader();
while(rd.read())
{
if(SysVersion==1)
{
Name=rd.getstring16(0);
}else if(SysVersion==2)
{
Name=rd.getstring16(1);
}else if(SysVersion==3)
{
Name=rd.getstring16(2);
}
cResult.Append(L"<Result ");
cResult.AppendFormat(L"Name='%s' ", _variant_t(Name.c_str()).bstrVal);
cResult.Append(L"/>");
}
rd.close();
}catch(Error *e)
{
rd.close();
cResult=L"";
}
cResult.Append(L"</Results>");
return cResult;
}[/code]