如何在SQLite C++中保存结构
我试图在sqlite3_bind_blob中保存simpel struct vector3,但我不知道这是如何工作的。如果调试此代码,控制台窗口将崩溃。我如何解决这个问题如何在SQLite C++中保存结构,c++,sqlite,C++,Sqlite,我试图在sqlite3_bind_blob中保存simpel struct vector3,但我不知道这是如何工作的。如果调试此代码,控制台窗口将崩溃。我如何解决这个问题 struct vector3 { int X; int Y; int Z; }; int main () { sqlite3 *db = NULL; sqlite3_stmt *res = NULL; sqlite3_open_v2("SaveGame1.sav", &
struct vector3
{
int X;
int Y;
int Z;
};
int main ()
{
sqlite3 *db = NULL;
sqlite3_stmt *res = NULL;
sqlite3_open_v2("SaveGame1.sav", &db, SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, NULL);
string query = "CREATE TABLE IF NOT EXISTS TestPlayer (vector BLOB)";
sqlite3_prepare_v2 (db, query.c_str(), query.length(), &res, 0);
sqlite3_step(res);
// Try to add mij struct
vector3 MyLocation;
MyLocation.X = 100;
MyLocation.Y = 100;
MyLocation.Z = 100;
query = "INSERT INTO TestPlayer (location) VALUES (?);";
sqlite3_prepare_v2 (db, query.c_str(), query.length(), &res, 0);
sqlite3_bind_blob (res, 1, &MyLocation, sizeof(vector3), SQLITE_TRANSIENT);
sqlite3_step(res);
query = "SELECT * FROM TestPlayer;";
sqlite3_prepare_v2 (db, query.c_str(), query.length(), &res, 0);
sqlite3_step(res);
const vector3 *GetLoc = (const vector3 *) sqlite3_column_blob(res, 0);
cout << GetLoc->X << endl;
sqlite3_finalize(res);
sqlite3_close(db);
return 0;
}
我认为必须对查询操作的结果使用sqlite3_column_blob。尝试对刚刚插入的数据发出查询如果这都是您的代码,则说明它是错误的。您需要在访问结果之前查询数据库。如果不是所有的代码,您需要向我们展示更多,以便我们了解您真正在做什么。请仔细阅读您的新代码。你没有按正确的顺序做事。你能给我一个提示吗?我再也看不到了。好吧,你刚刚解决了我能看到的最严重的问题。