1. 程式人生 > >使用VS2012編譯SQLite

使用VS2012編譯SQLite

最近工作的過程中需要用到SQLite,官網上主要提供的是編譯好的版本,如果需要了解原始碼需要自己編譯,這裡將編譯的相關方法分享出來,希望對大家有用!

1.下載SQLite

2.建立工程

1)開啟VS2012,新建一個Win32的動態庫的空專案。

2)向工程新增檔案

解壓sqlite-src-3080900.zip,從Src目錄下獲取除test*.* tclsqlite.c,lempar.c的檔案,ext\rtree目錄下rtree.c rtree.h、sqlite3rtree.h,新增到工程中;解壓sqlite-preprocessed-3080900.zip獲取keywordhash.h、opcodes.c 、opcodes.h、

parse.c  parse.h、sqlite3.h新增到工程中。

3)工程配置

解壓sqlite-shell-win32-x86-3080900.zip,獲取sqlite3.def,將sqlite3.def檔案,放在和工程檔案同級目錄下,在聯結器->輸入->模組定義檔案,輸入sqlite3.def。

在C/C++->預處理->巨集定義,設定下面巨集定義:SQLITE_ENABLE_COLUMN_METADATA、SQLITE_CORE、SQLITE_ENABLE_RTREE

3.編譯,OK

測試程式碼如下:

#include <iostream>
#include "sqlite3.h"
#include "sqliteInt.h"

using namespace std;

int main()
{
	string strFileName = "../DataBase/sqliteTest.db";
	sqlite3 *pDb = NULL;
	int errCode;

	errCode = sqlite3_open(strFileName.c_str(), &pDb);
	if (SQLITE_OK != errCode)
	{
		cout<<"開啟資料庫失敗!!"<<endl;
		sqlite3_close(pDb);

		return 0;
	}

	char *pzsErrMsg = NULL;  //儲存錯誤資訊

	//建立一個表,如果表存在,則不建立,將錯誤資訊儲存在pzsErrMsg中
	char *sql = "CREATE TABLE MyFirstSql( \
				ID INTEGER PRIMARY KEY, \
				SensorIDINTEGER, \
				SiteNumINTEGER, \
				Time VARCHAR(12), \
				SensorParamenterREAL);"; 
	errCode = sqlite3_exec(pDb, sql, 0, 0, &pzsErrMsg);
	if (SQLITE_OK != errCode)
	{
		cout<<pzsErrMsg<<endl;
	}

	sql = "INSERT INTO MyFirstSql(SensorDataVALUES(NULL, 1, 1, '201004111206', 18.9));";
	errCode = sqlite3_exec(pDb, sql, 0, 0, &pzsErrMsg);
	if (SQLITE_OK != errCode)
	{
		cout<<pzsErrMsg<<endl;
		return 0;
	}

	return 1;
}