我是新来的,但我已经跟随你很长时间了,我多次从你那里得到灵感来解决一些问题。现在我给你这个新问题:对于一个更大的项目,我必须使用C++中的Sqlite3库创建一个适合我需要的对象。显然我已经搜索了很多,但我找不到这个问题的答案:我试图创建一个方法,通过引用(指针)传递,能够查询表并将结果以测试格式导出到main函数,使用“sqlite3_column_text()”函数。我不能得到预期的结果。也许通过发布一些代码,我将能够更清楚。
#include <sqlite3.h>
#include <iostream>
#include <cstring>
using namespace std;
class dbase
{
public:
dbase(const char* dbfile);
void db_query(unsigned char** pas_t, char* sql);
virtual ~dbase();
private:
sqlite3* db;
sqlite3_stmt* stmt;
};
dbase::dbase(const char* dbfile)
{
sqlite3_open(dbfile, &db);
}
void dbase::db_query(unsigned char** pas_t, char* sql){
sqlite3_prepare_v2(db, sql, -1, &stmt, 0);
int i = 0;
const unsigned char** pr = new const unsigned char*[3];
while ((sqlite3_step(stmt)) == SQLITE_ROW) {
pr[i] = sqlite3_column_text(stmt, 0);
pas_t[i] = (unsigned char*)pr[i];
cout << "pas_t = " << pas_t[i] << " " << endl;
i++;
} cout << "\nend\n" << endl;
}
dbase::~dbase()
{
sqlite3_finalize(stmt);
sqlite3_close(db);
}
int main() {
dbase* db = new dbase("./Test.db");
unsigned char** glb = new unsigned char*[4];
db->db_query(glb, (char*)"SELECT Nome FROM Test");
int n = 0;
while(glb[n] != NULL){
cout << "glb -- " << glb[n] << "--" << n << endl;
n++;
}
delete glb;
db->~dbase();
return 0;
}
risultato:
pas_t = primo
pas_t = secondo
pas_t = terzo
end
glb -- ���?V--0
glb -- ���?V--1
glb -- ���?V--2
unsigned char**glb变量应该包含这三个字符串。
1条答案
按热度按时间p5cysglq1#
谢谢你的帮助,我的信已经到了一个结论,那就是我的信不是我写的,而是我的信。