Как я могу сохранить структуру в SQLITE C ++ - PullRequest
5 голосов
/ 19 декабря 2011

Я пытаюсь сохранить структуру simpel (vector3) в sqlite3_bind_blob, но я понятия не имею, как это работает. Если я отлаживаю этот код, окно консоли вылетает. Как я могу решить эту проблему?

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;
}

1 Ответ

3 голосов
/ 19 декабря 2011

Я считаю, что sqlite3_column_blob() должен использоваться в результатах операции запроса.Попробуйте выполнить запрос для данных, которые вы только что вставили

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...