加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在SQLITE C中保存结构

发布时间:2020-12-12 18:54:00 所属栏目:百科 来源:网络整理
导读:我尝试在sqlite3_bind_blob中保存一个simpel结构(vector3),但我不知道它是如何工作的.如果我调试此代码,控制台窗口崩溃.我该如何解决这个问题? struct vector3{ int X; int Y; int Z;};int main (){ sqlite3 *db = NULL; sqlite3_stmt *res = NULL; sqlite3
我尝试在sqlite3_bind_blob中保存一个simpel结构(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,0);

    sqlite3_bind_blob (res,1,&MyLocation,sizeof(vector3),SQLITE_TRANSIENT);
    sqlite3_step(res);

    query = "SELECT * FROM TestPlayer;";
    sqlite3_prepare_v2 (db,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().尝试为刚刚插入的数据发出查询

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读