VC6下编译与使用SQLite3

时间:2021-10-29 05:33:12
VC6下编译与使用SQLite3

 

    VC6中编译与使用SQLite3是件非常简单的事,主要有下载SQLite3包、编译生成Lib文件、在工程中使用SQLite3等步骤;现将这些步骤说明如下:

 

一、下载SQLite3

因为我们是在Windows下使用SQLite所以必需下载Windows版式的SQLite3包;包的简要说明如下:

    sqlite-3_3_7.zip      这个是SQLitewindows可执行文件

    sqlitedll-3_3_7.zip 这个是SQLitewindows库文件

    sqlite-source-3_3_7.zip 这个是SQLitewindows下源码文件

如果你需要在windows下创建数据库,那么sqlite-3_3_7.zip是必须的如果你需要在windows下编程,那么sqlitedll-3_3_7.zipsqlite-source-3_3_7.zip是必须的如果你需要在windows下学习研究数据库,那么sqlite-source-3_3_7.zip是必须的。

下载地址:

www.sqlite.com.cn/Upfiles/source/sqlite-3_3_7.zip

www.sqlite.com.cn/Upfiles/source/sqlitedll-3_3_7.zip

www.sqlite.com.cn/Upfiles/source/sqlite-source-3_3_7.zip

二、编译生成Lib文件

    启动一个命令行,进入VC的安装目录,如C:/Microsoft Visual Studio/VC98/Bin在这个目录下面有一个LIB.exe文件,我们就是利用本文件生成所需要的SQLite3.lib文件,将在SQLite官方下载的sqlite-source-3_3_7.zip包中的SQLite3.def文件放到相同目录,或者绝对路径,然后在命令行输入如下命令:

    D:/Microsoft Visual Studio/VC98/Bin>LIB /MACHINE:IX86 /DEF:sqlite.def

    如果命令成功执行的话我们可以看到LIB.exe文件已经帮我们生成好了SQLite3.lib文件。

三、在工程中使用SQLite3

为了简单起见我们用基于控制台的程序来做试验,试验文件如下:

#include <Stdio.h>

//包含SQLite3头文件

#include "sqlite3.h"

//连接sqlite3库文件

#pragma comment(lib,"sqlite3.lib")

 

int main( int argc, char* argv[] )

{

     int nRet;

 

     sqlite3 *db=NULL;

     nRet = sqlite3_open( "xx.db", &db );

     if ( 0 != nRet )

     {

         printf("Open db error %s/n", sqlite3_errmsg(db));

         sqlite3_close( db );  

     }else   

     {   

         printf( "open db success/n" );  

     }

 

     //create a table

     char *zErrMsg = 0;

     char *sql = " CREATE TABLE SensorData( ID INTEGER PRIMARY KEY,SensorID INTEGER,SiteNum INTEGER,Time VARCHAR(12),SensorParameter REAL);";

     printf( "%s/n", sql );

 

     nRet = sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

 

     if ( 0 != nRet )  

     {   

         printf("Create table falure, MSG:%s/n", zErrMsg); 

     }else   

     {

         printf( "Create table success/n" ); 

     }

     //insert data

     sql = "INSERT INTO /"SensorData/" VALUES(NULL , 1 , 1 , '200605011206', 18.9 );" ;

     nRet = sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

     if ( 0 != nRet )  

     {   

         printf("Insert Error:%s", zErrMsg); 

     }else   

     {   

         printf("Insert OK/n");

     }

 

     //insert data

     sql = "INSERT INTO /"SensorData/" VALUES(NULL , 1 , 1 , '200605011306', 16.4 );" ;

     nRet = sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

     if ( 0 != nRet )  

     {   

         printf("Insert Error:%s", zErrMsg); 

     }else   

     {   

         printf("Insert OK/n");

     }

 

     //update data

     sql = "UPDATE SensorData SET SensorParameter=1000.01,SensorID=123 WHERE SensorParameter=100.01";

     nRet = sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

     if ( 0 != nRet )  

     {   

         printf("Update Error:%s", zErrMsg); 

     }else   

     {   

         printf("Update OK/n");

     }

 

     //delete data

     sql = "DELETE FROM SensorData WHERE SensorID=123";

     nRet = sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

     if ( 0 != nRet )  

     {   

         printf("Delete Error:%s", zErrMsg);

     }else

     {

         printf("Delete OK/n");

     }

 

     //query data

     int nrow = 0, ncolumn = 0;

     char **azResult; //二维数组存放結果

     sql = "SELECT * FROM SensorData ";

     sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );

     int i = 0 ;

     printf( "row:%d column=%d /n" , nrow , ncolumn );

     printf( "/nThe result of querying is : /n" );

     for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )

         printf( "azResult[%d] = %s/n", i , azResult[i] );

     //释放azResult 的內存空間

     sqlite3_free_table( azResult );

     //关闭数据库

     sqlite3_close( db );

     return 0;

}

注:请将您的sqlite3.hsqlite3.libsqlite3.dll放到你的工程目录下!

执行本程序后其输出结果如下:

open db success

 CREATE TABLE SensorData( ID INTEGER PRIMARY KEY,SensorID INTEGER,SiteNum INTEGER,Time VARCHAR(12),SensorParameter REAL);

Create table success

Insert OK

Insert OK

Update OK

Delete OK

row:2 column=5

The result of querying is :

azResult[0] = ID

azResult[1] = SensorID

azResult[2] = SiteNum

azResult[3] = Time

azResult[4] = SensorParameter

azResult[5] = 1

azResult[6] = 1

azResult[7] = 1

azResult[8] = 200605011206

azResult[9] = 18.9

azResult[10] = 2

azResult[11] = 1

azResult[12] = 1

azResult[13] = 200605011306

azResult[14] = 16.4

Press any key to continue

 

简单吧,祝你开心我的朋友!