easySQLite使用筆記

Sonui發表於2024-07-17

由於在開發酷Q機器人時需要用到SQLite,所以找到了easySQLite,這是一個簡單的SQLite封裝庫,使用起來比較方便,但是文件不夠詳細,所以在這裡做一些補充

easySQLite地址:https://code.google.com/archive/p/easysqlite/

由於需要用到SQLite,經過一番兜兜轉轉,看到了easySQLite,下載下來,還不錯,就是有些地方說明不夠詳細,以此做補充

開啟資料庫

使用時提示 "Database::open: unable to open database file",可能是因為fileName編碼不正確,因為此處要求ut8編碼,嘗試在前頭加上 u8,例如:db.open(u8"D:/中文資料夾名/test.db");, 或對fileName進行轉碼

//gbk轉UTF-8
string GbkToUtf8(const std::string& strGbk)//傳入的strGbk是GBK編碼
{
    //gbk轉unicode
    int len = MultiByteToWideChar(CP_ACP, 0, strGbk.c_str(), -1, NULL, 0);
    wchar_t *strUnicode = new wchar_t[len];
    wmemset(strUnicode, 0, len);
    MultiByteToWideChar(CP_ACP, 0, strGbk.c_str(), -1, strUnicode, len);
    //unicode轉UTF-8
    len = WideCharToMultiByte(CP_UTF8, 0, strUnicode, -1, NULL, 0, NULL, NULL);
    char * strUtf8 = new char[len];
    WideCharToMultiByte(CP_UTF8, 0, strUnicode, -1, strUtf8, len, NULL, NULL);
    std::string strTemp(strUtf8);//此時的strTemp是UTF-8編碼
    delete[]strUnicode;
    delete[]strUtf8;
    strUnicode = NULL;
    strUtf8 = NULL;
    return strTemp;
}

取欄位值

//load all records
tbPerson.open();

//list loaded records
for (int index = 0; index < tbPerson.recordCount(); index++){
    if (Record* record = tbPerson.getRecord(index)) {
        Value* value = record->getValue("value");  //取value欄位的值
        Value* value2 = record->getKeyIdValue();  //取主鍵ID
    }
}

相關文章