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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |