C++開發SQLite3的使用總結

首先,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;");

由於個人水平所限,如有什麼錯漏,歡迎指正,謝謝!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章