欢迎投稿

今日深度:

使用VS2012编译SQLite,vs2012编译sqlite

使用VS2012编译SQLite,vs2012编译sqlite


最近工作的过程中需要用到SQLite,官网上主要提供的是编译好的版本,如果需要了解源码需要自己编译,这里将编译的相关方法分享出来,希望对大家有用!


1.下载SQLite

到SQLite官网http://www.sqlite.org/下载以下几个包:sqlite-src-3080900.zip、sqlite-shell-win32-x86-3080900.zip、sqlite-preprocessed-3080900.zip


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;
}


www.htsjk.Com true http://www.htsjk.com/SQLite/35281.html NewsArticle 使用VS2012编译SQLite,vs2012编译sqlite 最近工作的过程中需要用到SQLite,官网上主要提供的是编译好的版本,如果需要了解源码需要自己编译,这里将编译的相关方法分享出来,希望对大家...
相关文章
    暂无相关文章
评论暂时关闭