Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQLite C++中保存结构_C++_Sqlite - Fatal编程技术网

如何在SQLite C++中保存结构

如何在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", &

我试图在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", &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。尝试对刚刚插入的数据发出查询

如果这都是您的代码,则说明它是错误的。您需要在访问结果之前查询数据库。如果不是所有的代码,您需要向我们展示更多,以便我们了解您真正在做什么。请仔细阅读您的新代码。你没有按正确的顺序做事。你能给我一个提示吗?我再也看不到了。好吧,你刚刚解决了我能看到的最严重的问题。