首先,SQLite3的非常輕量級的數據庫。剛剛進入一家公司,對於數據庫完全外行,突然接到一個關於數據庫的任務,頓時凌亂了,回來找了n多資料,經過一個星期的奮鬥,終於完成了這樣任務。非常感謝各位網友的對SQLite3的經驗分享!
1、下載Sqlite3數據的必備文件,
可以再我的資源中找到,只需要把他們包含在你的工程中,就可以使用了。
2、查看CPPSqlite3的例子
在這裏可以查看http://www.codeproject.com/Articles/6343/CppSQLite-C-Wrapper-for-SQLite;
不過這裏貌似有個地方運行不過,更改一些地方:
a、將出現CppSQLite的地方改爲CppSQLite3,比如CppSQLiteDB db;改爲CppSQLite3DB db;
b、數據庫直接創建在系統盤的根目錄下會出現創建失敗,更改其他盤
c、CppSQLite3Query的成員函數調用出錯,改爲fieldDeclType;
d、在 cout << endl << "Transaction test, creating " << nRowsToCreate; 前面加上
q.finalize();
這樣就可以一直運行到底了;
這個例子中有絕大部分的使用說明,有什麼不懂的可以直接看Sqlite3的說明,這個庫的註釋非常給力
3、Sqlite3創建數據庫時包含中文路徑將會出錯
Sqlite使用utf-8編碼進行打開文件操作,所以必須轉換爲utf-8編碼格式,下面提供一個轉換的函數
char* GB2312ToUTF8(const char* gb2312)
{
int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);
wchar_t* wstr = new wchar_t[len+1];
memset(wstr, 0, len+1);
MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);
len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
char* str = new char[len+1];
memset(str, 0, len+1);
WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);
if(wstr) delete[] wstr;
return str;
}
4、字段含有空格的處理
使用[]符號將字段名包含起來
5、想要數據庫實現什麼功能,直接寫SQL語句實現吧
經常這樣用:
CppSQLite3DB db;
db.execDML("begin transaction;");
db.execDML("SQL語句");
CppSQLite3Query q = db.execQuery("SQL語句");
db.execDML("commit transaction;");
由於個人水平所限,如有什麼錯漏,歡迎指正,謝謝!