`
lovnet
  • 浏览: 6671286 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

C++使用SQLite步骤及示例

 
阅读更多
C++使用SQLite步骤及示例
开发环境:Windows XP+VS2005。

开发语言:C++。


1、 下载sqlite文件。

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

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


2、 生成sqlite3.lib。

sqlite-dll-win32-x86-3071300.zip文件解压到D:\ sqlite。
运行Visual Studio 2005 Command Prompt命令行程序。
启动位置:开始程序->Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 2005 Command Prompt。
依次执行控制台命令。
cd D:\sqlite\sqlite-dll-win32-x86-3071300
D:
lib /def:sqlite3.def /machine:ix86

即可生成sqlite3.lib文件。


3、 创建测试数据。

sqlite-shell-win32-x86-3071300.zip文件解压到D:\ sqlite。
启动命令行,进入D:\ sqlite目录。
命令依次为:
cd D:\sqlite
d:
创建test.db测试文件。
创建user表。
字段Code 字段类型 字段描述
id integer 主键,自增
name varchar(64) 用户名
age integer 年龄
创建命令依次如下。
D:\sqlite>sqlite3.exe test.db
SQLite version 3.7.13 2012-06-11 02:05:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table user
   ...> (
   ...> id integer primary key autoincrement,
   ...> name varchar(64),
   ...> age integer
   ...> );
sqlite> .quit


4、 创建示例工程

创建win32控制台工程SQLiteTest。
sqlite3.h(在sqlite-amalgamation-3071300.zip压缩包中)添加到工程。
sqlite3.lib复制到工程文件夹下。
工程属性中添加sqlite3.lib库依赖。
Configuration Properties->Linker->Input->Additional Dependencies添加sqlite3.lib。
程序代码为:
/*
@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("D:\\sqlite\\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。
运行结果:
add user success: zhao  18
add user success: qian  19
add user success: sun   20
add user success: li    21
delete user success: zhao
modify user success: sun        15
id = 2, name = qian, age = 19,
id = 3, name = sun, age = 15,
id = 4, name = li, age = 21,

5、 SQLite管理工具

可视化管理工具,推荐使用:SQLite Expert,见:http://www.sqliteexpert.com/



分享到:
评论

相关推荐

    c++连接sqlite数据库

    c++连接sqlite数据库的实例 c++连接sqlite数据库的实例

    C/C++连接SQLite数据库及基本操作

    用VC++6.0开发的基于对话框的应用程序,可以编译运行。目录下有一个名为student.db的文件,...这个代码说明了怎么用C/C++连接SQLite数据库文件及进行基本的操作,比如插入新的数据,查询数据。对学习SQLite数据库有帮助

    C++使用SQLite实例

    程序展示用C++使用轻量级数据库Sqlite,展示了数据的创建,表的创建,数据储存

    c/c++ sqlite3示例

    c++的sqlite3接口....里面有个示例Makefile及相应的源码.Makefile要根据个人机器上的sqlite3的头文件及动态库的存放位置做适当修改就OK. 功能: 建立数据库,建立表,插入数据,取得数据,释放资源,关闭库.

    SQLite使用代码示例(使用ASP.Net交互)

    使用ASP.Net演示了开发中使用SQLite的基本方法,建议使用SQLite Developer管理SQLite数据库。

    sqlite3(c++调用SQLite接口函数时会用到)

    在Windows操作系统下,如果想通过C++调用SQLite开发的时候,会用到资源中的内容。 共包括以下五个文件:sqlite3.lib ...相关调用调用步骤和使用方法可见如下内容: http://linger-yan.iteye.com/admin/blogs/1600007

    C#下使用SQlite小示例

    自己写得SQlite操作示例,演示了C#下面怎么使用SQlite的基本语句

    CppSQLite_demo.rar_C++ 操作sqlite_C++使用sqlite_CppSQLite_CppSQLite3

    c++操作SQlite实例,对初学者很有帮助。

    C++操作sqlite数据库

    codeblock下操作sqlite数据库简明教程及示例代码

    SQLite3初学示例代码

    SQLite3的创建添加查寻原理全在代码里,对于初学SQLite3来说配置SQLite3在VC平台下使用是一件非常麻烦苦脑的事,此代码包不需要你配置SQLite3就能直接运行,因为配置文件以经包含好并且进行了一些注解。可以了解其...

    C++Builder中使用的SQLite3类库

    SQLite3 的类库,已经转了格式,可以在c++builder中使用, 使用BCB 2010通过。放在这里留个备份。

    自己用C++封装sqlite3 for vc

    自己用C++封装sqlite3 for vc,内含Sqlite3 官方库

    c++连接sqlite所需的库文件

    c++连接sqlite需要的sqlite的库文件、头文件等。。。。。。

    C++插入SQLite数据库的BLOB字段

    使用环境是VS2010,往SQLite数据库的BLOB字段里插入jpg,主要修改路径和文件名也可以换成其他文件。工程里也自带SQLite的编译文件,如果需要的也可以下载。

    sqlite3 C++访问

    使用C++操作SQLite数据库,在windows平台上,用C++语言

    sqlite3的ORM框架

    简单易用的基于SQLite3的C++ ORM框架

    c++ sqlite3文件

    c++调用sqlite3需要的三个文件,分别是sqlite3.dll sqlite3.h sqlite3.lib

    c++ sqlite帮助类

    自己编写的一个c++ 版sqlite数据库访问帮助类,主要对sqlite的常用的几个接口函数进行封装成一个类,实现查询、事务处理等基本数据库访问应用,简单,好用,希望对大家有用,注意传人的参数是stl 的string 类型,...

    Sqlite3 C++ 简单单例数据库操作类封装

    Sqlite3 C++ 简单单例数据库操作类封装,支持数据的简单操作,可用,尚不完善

    C++ 读写Excel以及操作SQLite

    该文件中包含有: 1、NPOI_EXCEL工程: 该工程文件中包含有C#工程对NPOI.dll的的读写进行封装成类库的操作,主要是使用... 该工程是C++操作数据库的简单封装,主要是对数据库的基本操作,涉及有SQLite和SQL Sever数据库

Global site tag (gtag.js) - Google Analytics