参考网文:http://hi.baidu.com/lanmolei814/item/c08c82cb11ff612fa1b50a23
1.前往sqlite官网,下载到sqlitedll-3_3_7.zip,以及sqlite-source-3_3_7.zip
2.按照说明,把sqlitedll-3_3_7.zip解压得到dll和def文件
3.把def文件放在了vc安装目录(D:\Program Files\Microsoft Visual Studio\VC98\Bin)下,准备编译生成lib文件
4.报错,我的ghost win8,不知道为什么会这样,报错信息如下
---------------------------
LINK.EXE - 系统错误
---------------------------
无法启动此程序,因为计算机中丢失 mspdb60.dll。尝试重新安装该程序以解决此问题。
---------------------------
确定
---------------------------
百度了下,找到这个dll放了进去,重新试了一下,输入:LIB /MACHINE:IX86 /DEF:sqlite3.def
OK,成功了,生成两个文件sqlite3.exp和sqlite3.lib,需要的文件到手了,准备下一步工作
5.创建一个简单控制台程序把"sqlite3.h"引入Source Files,再把dll和lib文件放入工程目录下
#include "sqlite3.h"
#pragma comment(lib,"sqlite3.lib")
编译运行后无错,进行下一步
6.建表
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" );
}
7.插入数据
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");
}
8.更新数据
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");
}
9.删除数据
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");
}
10.查询数据
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 );
11.最后再关闭数据库
sqlite3_close(db);
例子很简单,但是对数据库的增删改查基本操作都有了。收益很大,实践完后写个简单的数据库操作的程序应该是没什么问题了
找到的另一个简单案例:http://www.cnblogs.com/braver/articles/2621182.html
自己新建了一个QQ群:77499558 有学习c++,mfc的同志欢迎加入,自己找不到组织就自发组织。