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

重新编译工程。

二、       示例代码

  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3.  
  4. #include "sqlite3.h"  
  5.  
  6. int main(void
  7.     sqlite3* sqlite3_db = NULL;             // 数据库对象指针 
  8.     char* zErrMsg = 0; 
  9.     int rc; 
  10.  
  11.     rc = sqlite3_open("wy.db", &sqlite3_db);    // 打开数据库文件,如果不存在将创建一个同名的数据库文件 
  12.     if(rc) 
  13.     { 
  14.         fprintf(stderr, "Can't open database: %s ", sqlite3_errmsg(sqlite3_db)); 
  15.         sqlite3_close(sqlite3_db); 
  16.         return (1); 
  17.     } 
  18.     else 
  19.     { 
  20.         printf("You have opened a sqlite3 database named wy.db successfully! Congratulations! Have fun ! ^-^ \n"); 
  21.     } 
  22.  
  23.     //创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 zErrMsg 中 
  24.     char* sql = " CREATE TABLE SensorData(ID INTEGER PRIMARY KEY,SensorID INTEGER,SiteNum INTEGER,Time VARCHAR(12),SensorParameter REAL);"
  25.     sqlite3_exec(sqlite3_db , sql , 0 , 0 , &zErrMsg); 
  26.  
  27. #ifdef _DEBUG 
  28.     printf("zErrMsg = %s \n", zErrMsg); 
  29. #endif 
  30.  
  31.     //插入数据  
  32.     sql = "INSERT INTO 'SensorData' VALUES(NULL , 1 , 1 , '200605011206', 18.9);"
  33.     sqlite3_exec(sqlite3_db , sql , 0 , 0 , &zErrMsg); 
  34.  
  35.     sql = "INSERT INTO 'SensorData' VALUES(NULL , 23 , 45 , '200605011306', 16.4);"
  36.     sqlite3_exec(sqlite3_db , sql , 0 , 0 , &zErrMsg); 
  37.  
  38.     sql = "INSERT INTO 'SensorData' VALUES(NULL , 34 , 45 , '200605011306', 15.4);"
  39.     sqlite3_exec(sqlite3_db , sql , 0 , 0 , &zErrMsg); 
  40.  
  41.     int nrow = 0, ncolumn = 0; 
  42.     char **azResult;    // 二维数组存放结果 
  43.  
  44.     //查询数据 
  45.     sql = "SELECT * FROM SensorData"
  46.     sqlite3_get_table(sqlite3_db , sql , &azResult , &nrow , &ncolumn , &zErrMsg); 
  47.  
  48.     printf("row:%d column=%d \n" ,nrow,ncolumn); 
  49.     printf(" The result of querying is : \n"); 
  50.  
  51.     for(int i=0; i<(nrow + 1) * ncolumn; i++) 
  52.         printf("azResult[%d] = %s \n", i , azResult[i]); 
  53.  
  54.     // 删除数据 
  55.     sql = "DELETE FROM SensorData WHERE SensorID = 1;"
  56.     sqlite3_exec(sqlite3_db , sql , 0 , 0 , &zErrMsg); 
  57. #ifdef _DEBUG 
  58.     printf("zErrMsg = %s  \n", zErrMsg); 
  59. #endif 
  60.     sql = "SELECT * FROM SensorData "
  61.     sqlite3_get_table(sqlite3_db , sql , &azResult , &nrow , &ncolumn , &zErrMsg); 
  62.     printf(" row:%d column=%d \n" , nrow , ncolumn); 
  63.     printf(" After deleting , the result of querying is :  \n"); 
  64.  
  65.     for(int i=0; i<(nrow + 1) * ncolumn; i++) 
  66.         printf("azResult[%d] = %s \n", i , azResult[i]); 
  67.  
  68.     // 释放掉 azResult 的内存空间 
  69.     sqlite3_free_table(azResult); 
  70.  
  71. #ifdef _DEBUG 
  72.     printf("zErrMsg = %s  \n", zErrMsg); 
  73. #endif 
  74.  
  75.     sqlite3_close(sqlite3_db);  // 关闭数据库 
  76.  
  77.     return 0; 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值