作者:大可 | 来源:互联网 | 2023-05-27 19:01
如文章标题在sqlite.h头文件里边,哪个函数可以获得查询结果集,具体的使用方法是什么。求大神们指导小弟下
3 个解决方案
现在用 #include "sqlite3/sqlite3.h" 3了吧?
网上可以找到例子,头文件里面每个api也都有注释.自己看看吧.
sqlite3 *m_poConn;
sqlite3_stmt *m_poStmt;
连接数据库:
iRetCode = sqlite3_open(strDBPath.c_str(), &m_poConn);
if (iRetCode != SQLITE_OK)
{
string strError("Open database error: ");
strError += string(sqlite3_errmsg(m_poConn));
sqlite3_close(m_poConn);
关闭:
iRetCode = sqlite3_finalize(m_poStmt);
m_poStmt = NULL;
iRetCode = sqlite3_close(m_poConn);
执行:
iRetCode = sqlite3_exec(m_poConn, m_strSql.c_str(), 0, 0, 0);
取数据:
iRetCode = sqlite3_step(m_poStmt);
因为一些原因,我现在只能用sqlite,不能用sqlite3........所以希望能得到sqlite的解决方法。我看头文件里边sqlite_get_table函数的第3个参数是保存查询结果集的,但是事实上我得到的只是每一列的名字,并没有值,所以想问下是不是我用错了:
sqlite_get_table(p_sqlite,sql.c_str(),&resultp,&row,&column,&zErrmsg);
int j = column;
69 cout << "123 " << resultp[j] << endl;
70 for(int i = 0;i < row;i++)
71 {
72 map* map_row = new map[1024];
73 for(int index = 0;index < column;index++)
74 {
75
76 map_row->insert(pair(resultp[index],resultp[j]));
77 j++;
78 }
79 retvalue.push_back(map_row);
80 }
81 sqlite_free_table(resultp);
假设我这里有5行,5列的表。那resultp[6]应该是第一个数据值,但事实上这个是空的 当然我的数据库不是空的 是有有效数据的。