C/C++ 操控访问SQLite3 数据库

一、 SQLite3数据库简介

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。(即SQLite3适用于比较轻量级的应用)

二、 使用SQLite3

1、 下载、编译sqlite文件。

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


          SQLite版本为SQLite 3.7.13,相关文件如下。

          sqlite-dll-win32-x86-3071300.zip:包含sqlite3.def、sqlite3.dll文件。(用来生成sqlite3.lib)

          sqlite-amalgamation-3071300.zip:包含sqlite3.h sqlite3.c 文件。(项目工程中需要包含sqlite3.h和sqlite3.c文件(切记))

          sqlite-shell-win32-x86-3071300.zip:包含sqlite3.exe 文件。(sqlite3应用程序)

    用Visual Studio xxxx command  Prompt命令行程序编译sqlite3.def、sqlite3.dll生成sqlite3.lib(先把这两个文件copy到C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin,用里面的lib.exe编译:

            lib /def:sqlite3.def /machine:ix86 即可生成sqlite3.lib和sqlite3.exp文件



2.  在C/C++项目中使用sqlite数据库的操作

        前提条件:

                a. 项目中link  sqlite3.lib文件

                b. 在项目源文件中加入sqlite3.c和sqlite3.h文件

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



3.  示例代码如下:
#include <iostream>  
#include <string>  
#include <sstream>  
#include "sqlite3.h"  
using namespace std;

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

sqlite3* pDB;
static int callback(void *NotUsed, int argc, char **argv, char **azColName)  //回调函数
{
    int i = 0;
    std::cout << azColName[i] << " = " << (argv[i] ? argv[i] : "NULL") << ", ";
    std::cout << "\n";
    return 0;
}
int main()
{
    int res = sqlite3_open("mydatabase.db", &pDB);  //打开数据库
    if (res){
        std::cout << "Can't open database: " << sqlite3_errmsg(pDB);
        sqlite3_close(pDB);
        return -1;
    }
    char* errMsg;
    string dropTab = "drop table test;";
    string createStrSQL = "create table test(one int, two long);";

    res = sqlite3_exec(pDB, dropTab.c_str(), 0, 0, &errMsg);  //运行SQL语句
    if (res != SQLITE_OK)
    {
        std::cout << "执行SQL出错." << errMsg << std::endl;
        return -1;
    }
    res = sqlite3_exec(pDB, createStrSQL.c_str(), 0, 0, &errMsg);
    if (res != SQLITE_OK)
    {
        std::cout << "执行创建table的SQL出错." << errMsg << std::endl;
        return -1;
    }
    else
        std::cout << "创建table的SQL成功执行." << std::endl;

    for (int i = 1; i < 10; ++i)
    {
        stringstream strsql;
        strsql << "insert into test values(";
        strsql << i << "," << (i + 10) << ");";
        std::string str = strsql.str();
        res = sqlite3_exec(pDB, str.c_str(), 0, 0, &errMsg);
        if (res != SQLITE_OK)
        {
            std::cout << "执行SQL出错." << errMsg << std::endl;
            return -1;
        }
    }
    string strSQL = "select * from test;";
    res = sqlite3_exec(pDB, strSQL.c_str(), callback, 0, &errMsg);
    if (res != SQLITE_OK)
    {
        std::cout << "执行SQL出错." << errMsg << std::endl;
        return -1;
    }
    else
        std::cout << "SQL成功执行." << std::endl;
    return 0;
}

三、更多sqlite3的操作文档请直接看sqlite3.h/sqlite3.c。里面有非常详细的注释。
        谢谢阅读。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值