SQLite3--2.VS2015 C++ 调用sqlite3

1.下载

下载网址:http://www.sqlite.org/download.html。

SQLite版本为SQLite 3.11.1,相关文件如下。
sqlite-dll-win32-x86-3110100.zip:包含sqlite3.def、sqlite3.dll文件。
sqlite-amalgamation-3110100.zip:包含sqlite3.h 文件。
sqlite-tools-win32-x86-3110100.zip:包含sqlite3.exe 文件。

2.生成sqlite3.lib库

解压sqlite-dll-win32-x86-3300100.zip到E:\ebook\SQL\VSTest

打开VS2015 lib 命令行工具

 

解压sqlite-tools-win32-x86-3300100.zip到E:\ebook\SQL\VSTest

 

3。生成test.db

切换到路径E:\ebook\SQL\VSTest\Test

4.创建工程


 创建win32控制台工程SQLiteTest。
 sqlite3.h(在sqlite-amalgamation-3071300.zip压缩包中)添加到工程。
 sqlite3.lib复制到工程文件夹下。
 工程属性中添加sqlite3.lib库依赖。
Configuration Properties->Linker->Input->Additional Dependencies添加sqlite3.lib。

代码

// SQliteCP.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"


//int main()
//{


//    return 0;
//}


/*
@brief 本程序测试sqlite数据库的增删改查
@date 2012-09-03
*/
// SQLiteTest.cpp : Defines the entry point for the console application.  
//   

#include "stdafx.h"  
#include "sqlite3.h"  
#include <iostream>  
using namespace std;

sqlite3 * pDB = NULL;

//增加用户  
bool AddUser(const string& sName, const string& sAge);
//删除用户  
bool DeleteUser(const string& sName);
//修改用户  
bool ModifyUser(const string& sName, const string& sAge);
//查找用户  
bool SelectUser();

int _tmain(int argc, _TCHAR* argv[])
{
    //打开路径采用utf-8编码  
    //如果路径中包含中文,需要进行编码转换  
    int nRes = sqlite3_open("E:\\ebook\\SQL\\VSTest\\Test\\test.db", &pDB);
    if (nRes != SQLITE_OK)
    {
        cout << "Open database fail: " << sqlite3_errmsg(pDB);
        goto QUIT;
    }

    //添加“赵钱孙李”  
    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;
    }

QUIT:
    sqlite3_close(pDB);

    return 0;
}

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: " << cErrMsg << endl;
        return false;
    }
    else
    {
        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: " << cErrMsg << endl;
        return false;
    }
    else
    {
        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='";
    strSql += sName;
    strSql += "';";

    char* cErrMsg;
    int nRes = sqlite3_exec(pDB, strSql.c_str(), 0, 0, &cErrMsg);
    if (nRes != SQLITE_OK)
    {
        cout << "modify user fail: " << cErrMsg << endl;
        return false;
    }
    else
    {
        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 fail: " << cErrMsg << endl;
        return false;
    }

    return true;
}
 

 

编译成功后,将sqlite3.dll复制到SQLiteTest.exe同一目录下,运行SQLiteTest.exe。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值