求助:使用MFC开发sqlite时遇到回调函数参数传递的问题!
我用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从头到尾都没有传到回调函数中去 其值也就没变 不知哪位做过 可否给个思路怎样做才能达到我想要的效果 因为数据库查询到的数据后面是肯定要使用的 在此先谢过各位!