没有回调的sqlite3_exec
发布时间:2020-12-12 23:42:58 所属栏目:百科 来源:网络整理
导读:有没有办法通过回调获得sqlite3_exec()结果? 当我搜索时,我想直接获得结果,最像是返回函数还是OUT参数? 谢谢. 我编写了一些代码,允许我们根据sql查询(zSql)从open db(db)读取数据,而不需要回调. 请注意,此代码有效但可能仍需要一些工作(例如,我不确定是否
有没有办法通过回调获得sqlite3_exec()结果?
当我搜索时,我想直接获得结果,最像是返回函数还是OUT参数? 谢谢. 我编写了一些代码,允许我们根据sql查询(zSql)从open db(db)读取数据,而不需要回调.请注意,此代码有效但可能仍需要一些工作(例如,我不确定是否需要释放文本数据…) int RunSqlNoCallback(sqlite3 * db,const char * zSql) { sqlite3_stmt *stmt = NULL; int rc = sqlite3_prepare_v2(db,zSql,-1,&stmt,NULL); if (rc != SQLITE_OK) return rc; int rowCount = 0; rc = sqlite3_step(stmt); while (rc != SQLITE_DONE && rc != SQLITE_OK) { rowCount++; int colCount = sqlite3_column_count(stmt); for (int colIndex = 0; colIndex < colCount; colIndex++) { int type = sqlite3_column_type(stmt,colIndex); const char * columnName = sqlite3_column_name(stmt,colIndex); if (type == SQLITE_INTEGER) { int valInt = sqlite3_column_int(stmt,colIndex); printf("columnName = %s,Integer val = %d",columnName,valInt); } else if (type == SQLITE_FLOAT) { double valDouble = sqlite3_column_double(stmt,Double val = %f",valDouble); } else if (type == SQLITE_TEXT) { const unsigned char * valChar = sqlite3_column_text(stmt,Text val = %s",valChar); free(valChar); } else if (type == SQLITE_BLOB) { printf("columnName = %s,BLOB",columnName); } else if (type == SQLITE_NULL) { printf("columnName = %s,NULL",columnName); } } printf("Line %d,rowCount = %d",rowCount,colCount); rc = sqlite3_step(stmt); } rc = sqlite3_finalize(stmt); return rc; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |