加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

sqlite回调函数CallBack

发布时间:2020-12-12 20:16:56 所属栏目:百科 来源:网络整理
导读:最近项目上使用到Sqlite数据库,在进行数据库查询时使用它的回调函数,发现不知道它应该怎么将数据返回。下面记录回调函数的使用: int CSqlite::BackCall(void *data,int nColumn,char **colValues,char **colNames) //回调函数 { CSqlite *pT =(CSqlite*)d

最近项目上使用到Sqlite数据库,在进行数据库查询时使用它的回调函数,发现不知道它应该怎么将数据返回。下面记录回调函数的使用:

int CSqlite::BackCall(void *data,int nColumn,char **colValues,char **colNames) //回调函数
{
CSqlite *pT =(CSqlite*)data;
pT->column = nColumn;
for(int i=0;i<nColumn;i++)
{
//pT->strVal += colNames[i];
//pT->strVal += ":";
pT->strVal += colValues[i];
pT->strVal += "n";
}
return 0;
}
在此函数中第一个参数data是sqlite3_exec语句中传入的第四个参数(this指针),通过data参数,你可以传入一些特殊的指针(比如类指针、结构指针),然后在这里面强制转换成对应的类型(这里面是void*类型,必须强制转换成你的类型才可用)。然后操作这些数据;

第二个参数nColumn是这一条记录有多少个字段;

第三个参数colValues里包含了查找到的所有数据;

第四个参数colNames表示那一列的字段名。

本程序将查询到的数据保存在字符串strVal中,可通过分解CString字符串获得需要的数据。

int CSqlite::OpenSqlite(char *SqlName) { if(sqlite3_open(SqlName,&sdb)) { printf("sdb open failedn"); return -1; } return 0; } int CSqlite::CloseSqlite() { sqlite3_close(sdb); return 0; } int CSqlite::SqlExecute(char *sql_state) { strVal.Empty(); if(sqlite3_exec(sdb,sql_state,BackCall,this,&err_msg)!=SQLITE_OK) { printf("sql execute error %sn",err_msg); return -1; } return 0; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读