sqlite3中遇到的有关问题

sqlite3中遇到的问题

CString TimeUrl("text.db");
sqlite3 *db;
int result;
char * errmsg = NULL;
char **dbResult; //是 char ** 类型,两个*号
int nRow, nColumn;
int i , j;
int index;

int rv;
result = sqlite3_open("xml/test.db", &db);
//rv = sqlite3_rekey(db,"zzzili",strlen("zzzili"));
if( SQLITE_OK == result)
{
result = sqlite3_get_table( db,"select * from BntDate", &dbResult, &nRow, &nColumn, &errmsg );
if( SQLITE_OK == result )
{
//查询成功
index = nColumn; //前面说过 dbResult 前面第一行数据是字段名称,从 nColumn 索引开始才是真正的数据
TimeUrl.Format(_T("%d条记录"),nRow);
XMessageBox(BntEle,(wchar_t*)(LPCTSTR)TimeUrl,L"错误提示!",XMB_OK | XMB_CANCEL);
for( i = 0; i < nRow ; i++ )
{
TimeUrl.Format(_T("第%d条记录"),i+1);
XMessageBox(BntEle,(wchar_t*)(LPCTSTR)TimeUrl,L"错误提示!",XMB_OK | XMB_CANCEL);
for( j = 0 ; j < nColumn; j++ )
{
TimeUrl.Format(_T("字段名:%d,字段值:%d"),dbResult[j],dbResult [index]);
XMessageBox(BntEle,(wchar_t*)(LPCTSTR)TimeUrl,L"错误提示!",XMB_OK | XMB_CANCEL);
++index; // dbResult 的字段值是连续的,从第0索引到第 nColumn - 1索引都是字段名称,从第 nColumn 索引开始,后面都是字段值,它把一个二维的表(传统的行列表示法)用一个扁平的形式来表示
}
}
}
else
{
TimeUrl.Format(_T("创建表失败,错误码:%d,错误原因:%d"), result, errmsg);
XMessageBox(BntEle,(wchar_t*)(LPCTSTR)TimeUrl,L"错误提示!",XMB_OK | XMB_CANCEL);
}
//到这里,不论数据库查询是否成功,都释放 char** 查询结果,使用 sqlite 提供的功能来释放
sqlite3_free_table( dbResult );
}

else
{
XMessageBox(BntEle,L"db不好使",L"错误提示!",XMB_OK | XMB_CANCEL);
}


sqlite3_open返回值都正常,但是到查询时候就错误并返回26:cannot perform this operation on a closed dataset
说开打的不是一个数据库文件,不知道错误在哪里,请各位牛人帮忙
------最佳解决方案--------------------
sqlite3_open 打开绝对路径试试
------其他解决方案--------------------
试试看,最好别用相对路径,
topic.csdn.net/u/20120621/11/94b203b6-7e07-436b-8563-ada2e8441f86.html

------其他解决方案--------------------
补充一句,我使用sqliteadmin(可视化)打开正常,更够编辑
------其他解决方案--------------------
用sqlite3_prepare_v2试试看
------其他解决方案--------------------
非用 sqlite3_get_table , sqlite3_exec 不能用?