SQLite3介绍

SQLite介绍

SQLite是一个完全独立的、不需要服务器、不要任何配置、支持SQL的、开源的文件数据库引擎。源代码和支持可以登录:http://www.sqlite.org/

一、 代码编译

1、 开发者若要使用SQLite,登录网站下载源代码。包括(以VS2010编译版本Version 3.7.10为例):

sqlite-amalgamation-3071000.zip 包含.h文件和.cpp文件

sqlite-shell-win32-x86-3071000.zip 包含.def文件和DLL文件

2、 编译步骤如下:

1) 利用VS2010新建一个Win32工程,应用程序类型选择DLL,并勾上“Empty Project”选项;

2) 然后将下载的.h文件、.cpp文件和.def文件拷贝到工程目录下;

3) 在VS2010的“Solution Explorer”中,“Header Files”加入.h文件,“Source Files”加入.cpp和.def文件;

4) 工程设置【Linker】à【Input】à【Module Definition File】中填入“.\sqlite3.def”;

5) 编译工程;

6) 若提示如下错误:

Error LNK2001: unresolved external symbol sqlite3_column_database_name

Error LNK2001: unresolved external symbol sqlite3_column_database_name16

…… ……

工程设置【C/C++】à【Preprocessor】à【Preprocessor Definitions】加入编译选项:

THREADSAFE

SQLITE_ENABLE_COLUMN_METADATA

SQLITE_ENABLE_RTREE

重新编译工程。

二、 示例代码

#include <stdio.h>
#include <stdlib.h>

#include "sqlite3.h" 

int main(void)
{
	sqlite3* sqlite3_db	= NULL;				// 数据库对象指针
	char* zErrMsg = 0;
	int rc;

	rc = sqlite3_open("wy.db",&sqlite3_db);	// 打开数据库文件,如果不存在将创建一个同名的数据库文件
	if(rc)
	{
		fprintf(stderr,"Can't open database: %s ",sqlite3_errmsg(sqlite3_db));
		sqlite3_close(sqlite3_db);
		return (1);
	}
	else
	{
		printf("You have opened a sqlite3 database named wy.db successfully! Congratulations! Have fun ! ^-^ \n");
	}

	//创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 zErrMsg 中
	char* sql = " CREATE TABLE SensorData(ID INTEGER PRIMARY KEY,SensorID INTEGER,SiteNum INTEGER,Time VARCHAR(12),SensorParameter REAL);";
	sqlite3_exec(sqlite3_db,sql,&zErrMsg);

#ifdef _DEBUG
	printf("zErrMsg = %s \n",zErrMsg);
#endif

	//插入数据 
	sql = "INSERT INTO 'SensorData' VALUES(NULL,1,'200605011206',18.9);";
	sqlite3_exec(sqlite3_db,&zErrMsg);

	sql = "INSERT INTO 'SensorData' VALUES(NULL,23,45,'200605011306',16.4);";
	sqlite3_exec(sqlite3_db,34,15.4);";
	sqlite3_exec(sqlite3_db,&zErrMsg);

	int nrow = 0,ncolumn = 0;
	char **azResult;	// 二维数组存放结果

	//查询数据
	sql = "SELECT * FROM SensorData";
	sqlite3_get_table(sqlite3_db,&azResult,&nrow,&ncolumn,&zErrMsg);

	printf("row:%d column=%d \n",nrow,ncolumn);
	printf(" The result of querying is : \n");

	for(int i=0; i<(nrow + 1) * ncolumn; i++)
		printf("azResult[%d] = %s \n",i,azResult[i]);

	// 删除数据
	sql = "DELETE FROM SensorData WHERE SensorID = 1;";
	sqlite3_exec(sqlite3_db,&zErrMsg);
#ifdef _DEBUG
	printf("zErrMsg = %s  \n",zErrMsg);
#endif
	sql = "SELECT * FROM SensorData ";
	sqlite3_get_table(sqlite3_db,&zErrMsg);
	printf(" row:%d column=%d \n",ncolumn);
	printf(" After deleting,the result of querying is :  \n");

	for(int i=0; i<(nrow + 1) * ncolumn; i++)
		printf("azResult[%d] = %s \n",azResult[i]);

	// 释放掉 azResult 的内存空间
	sqlite3_free_table(azResult);

#ifdef _DEBUG
	printf("zErrMsg = %s  \n",zErrMsg);
#endif

	sqlite3_close(sqlite3_db);	// 关闭数据库

	return 0;
}

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能