求助:使用MFC开发sqlite时遇到回调函数参数传递的问题!

ch_jm0723 2014-04-20 09:56:52
我用sqlite做了一个数据库的程序 在数据查找函数中使用了回调函数传回查得的数据 但未能实现 我使用了一个结构体作为传进去的参数 代码如下:
int callback(void *olt_temp, int argc, char *value[], char *name[])
{
userdata *pdata = NULL;
pdata = (userdata *)olt_temp;
pdata->username = value[0];
pdata->password = value[1];
pdata->rank = (int)atoi(value[2]);
pdata->num = value[3];

return 0;
}这里断点调试--〉 数据查询成功了 pdata是有值的
在查询函数中 这个结构体的内存位置没变 但里面的内容都成了乱码 不知何解 代码如下:
int CSQLite::select(char* sql, userdata *userdata_temp)
{
if(sqlite3_exec( db , sql , callback, userdata_temp, &zErrMsg ) == SQLITE_OK)
{
AfxMessageBox(CString(userdata_temp->num));
CString test = CString(zErrMsg);
AfxMessageBox(test);
return 0;
}
else
return -1;
}调试结果userdata_temp的值全部乱码

注:typedef struct userdata
{
char* username;
char* password;
int rank;
int num;
} userdata;该定义位于自定义csqlite类头文件中
userdata_temp定义在窗口类中,作为select函数的参数

因为不太清楚回调函数的执行过程 我觉得应该是userdata_temp从头到尾都没有传到回调函数中去 其值也就没变 不知哪位做过 可否给个思路怎样做才能达到我想要的效果 因为数据库查询到的数据后面是肯定要使用的 在此先谢过各位!
...全文
374 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ch_jm0723 2014-05-03
  • 打赏
  • 举报
回复
自己结一个吧 是char*传参的问题 说白了还是基础没掌握好 后面我把他改成了cstring的全局变量 顺利传参……
ch_jm0723 2014-04-21
  • 打赏
  • 举报
回复
急用啊 各位大大拜托了!

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧