文章目录
- 一、下载所需安装包
- 二、生成sqlite3.lib文件并添加到vs中
- 三、创建数据库
- 四、测试样例:
一、下载所需安装包
官网地址:http://www.sqlite.org/download.html 下载 sqlite-dll-win32-x86-3080803.zip,解压缩后里面有两个文件:sqlite3.dll和sqlite3.def。
下载 sqlite-amalgamation-3080803.zip,解压缩后里面有4个文件:sqlite3.h、sqlite3ext.h、shell.c、sqlite3.c。
下载 sqlite-shell-win32-x86-3080803.zip,解压缩后里面有1个文件:sqlite3.exe(这个文件可能是做测试用的,没有用到,后期可以生成)。
二、生成sqlite3.lib文件并添加到vs中
- 将sqlite-dll-win32-x86-3080803.zip解压到c盘(别的盘也可以,后期一些路径需要注意)
- 打开vs2010创建一个win32项目(打开VS2010,文件–>新建–>项目–>Visual C+±->Win32–>Win32项目,项目名称输入SQLite,点击下一步,应用程序选择“静态库”,附件选项中取消选中“预编译头”,点击"完成")
- 启动Microsoft Visual Studio 2010 -->Visual Studio Tools -->Visual Studio 命令提示(2010)(如下图)
- 使用命令 LIB /out:c:/sqlite3.lib /MACHINE:IX86 /DEF:c:/sqlite3.def (注意路径,此时需要将sqlite3.def拷贝到C盘跟目录下,生成的文件也在C盘根目录下,如下图)
- 将sqlite3.h,shell.c文件复制到这个工程目录下,然后在项目中将这两个文件添加进来(如下图(cpp文件为自己创建,用来下方做测试))
- sqlite3.lib复制到工程文件夹下。
- 工程属性中添加sqlite3.lib库依赖
(Configuration Properties->Linker->Input->Additional Dependencies添加sqlite3.lib)或
(项目->属性->配置属性->链接器->输入->附加依赖项添加sqlite3.lib) - 编译运行,会出现数据类型转换的一些警告,不用管它,然后在Release目录下就会生成一个sqlite3.exe文件。
三、创建数据库
- 在CMD下进入到项目目录下Release目录下的sqlite.exe文件(有的可能是sqlite3.exe,看具体文件)
- 在CMD命令提示符下输入sqlite test.db(test.db是数据库名)回车,执行完后,命令提示符自动跳转到"SQLITE>"状态。
注意:这时test.db数据库确实已经创建好了但是还是个临时的,所以现在还是看不到这个数据库! - 创建数据库表并添加属性
sqlite> create table user
> (
> id integer primary key autoincrement,
> name varchar(64),
> age integer
> );
sqlite> .quit
四、测试样例:
实现sqlite数据库的增删改查
#include "sqlite3.h"
#include <iostream>
using namespace std;
sqlite3 *pDB = NULL;
//删除表内数据
bool DeleteTable();
//重新设置表内数据自增id
bool Setsequence();
//向创建的user表内插入数据
bool AddUser(const string& sName, const string& sAge);
//删除表内的某一角色
bool DeleteUser(const string& sName);
//修改某一角色的某一属性
bool ModifyUser(const string& sName, const string& sAge);
//查询user表中所有角色的所有信息
bool SelectUser();
//查询user表中特定角色的信息
bool push_clicked();
int main()
{
//打开sqlite数据库(按照自己创建的数据库位置打开)
int nRes = sqlite3.open("D:\\example\\SQLite\\Debug\\test.db",&pDB);
if(nRes != SQLITE_OK)
{
cout<<"Open database fail: "<<sqlite3_errmsg(pDB);
goto QUIT;
}
DeleteTable();
Setsequence();
if( !AddUser("zhao","18") || !AddUser("qian","19") || !AddUser("sun","20") || !AddUser("li","21"))
{
goto QUIT;
}
if(!DeleteUser("zhao"))
{
goto QUIT;
}
if(!ModifyUser("sun","15"))
{
goto QUIT;
}
if(!SelectUser())
{
goto QUIT;
}
push_clicked();
QUIT:
sqlite3_close(pDB);
system("pause");
return 0;
}
bool DeleteTable()
{
string strSql = "delete from user";
char *cErrMsg;
int nRes = sqlite3_exec(pDB , strSql.c_str(), 0, 0, &cErrMsg);
if(nRes != SQLITE_OK)
{
cout<<"Delete user fail!"<<endl;
return false;
}
cout<<"Delete user success!"<<endl;
return true;
}
bool Setsequence();
{
string strSql = "update sqlite_sequence set seq = 0 where name = 'user'";
char *cErrMsg;
int nRes = sqlite3_exec(pDB , strSql.c_str(), 0, 0, &cErrMsg);
if(nRes != SQLITE_OK)
{
cout<<"Set user fail!"<<endl;
return false;
}
cout<<"Set user success!"<<endl;
return true;
}
bool AddUser(const string& sName, const string& sAge)
{
string strSql = "";
strSql += "insert into user(name,age)";
strSql += "values('";
strSql += sName;
strSql += "',";
strSql += sAge;
strSql += ")";
char *cErrMsg;
int nRes = sqlite3_exec(pDB , strSql.c_str(), 0, 0, &cErrMsg);
if(nRes != SQLITE_OK)
{
cout<<"add user fail!"<<endl;
return false;
}
cout<<"add user success: "<<sName.c_str()<<"\t"<<sAge.c_str()<<endl;
return true;
}
bool DeleteUser(const string& sName)
{
string strSql = "";
strSql += "delete from user where name = '";
strSql += sName;
strSql += "'";
char *cErrMsg;
int nRes = sqlite3_exec(pDB , strSql.c_str(), 0, 0, &cErrMsg);
if(nRes != SQLITE_OK)
{
cout<<"delete user fail!"<<endl;
return false;
}
cout<<"delete user success: "<<sName.c_str()<<endl;
return true;
}
bool ModifyUser(const string& sName, const string& sAge)
{
string strSql = "";
strSql += "update user set age = ";
strSql += sAge;
strSql += " where name = '"; //where前的空格不能删除
strSql += sName;
strSql += "'";
char *cErrMsg;
int nRes = sqlite3_exec(pDB , strSql.c_str(), 0, 0, &cErrMsg);
if(nRes != SQLITE_OK)
{
cout<<"modify user fail!"<<endl;
return false;
}
cout<<"modify user success: "<<sName.c_str()<<"\t"<<sAge.c_str()<<endl;
return true;
}
static int UserResult(void *NotUsed, int argc , char **argv, char **azColName)
{
for(int i=0 ; i<argc ; i++)
{
cout<<azColName[i]<<" = "<<(argv[i] ? argv[i] : "NULL")<<", ";
}
cout<<endl;
return 0;
}
bool SelectUser()
{
char *cErrMsg;
int res = sqlite3_exec(pDB , "select * from user", UserResult, 0, &cErrMsg);
if(res != SQLITE_OK)
{
cout<<"select user fail!"<<endl;
return false;
}
return true;
}
bool push_clicked()
{
char *cErrMsg;
int res = sqlite3_exec(pDB , "select name from user where age = 21", UserResult, 0, &cErrMsg);
if(res != SQLITE_OK)
{
cout<<"find user fail!"<<endl;
return false;
}
return true;
}
结果如下图: