zoukankan      html  css  js  c++  java
  • C语言使用SQLite3数据库

    SQLite是一个著名的免费数据库(不管是商用还是私人使用都免费),已经向众多公司如Adobe, Airbus, Apple, google, GE, Microsoft等提供了支持。

    SQLite不像其它多数的SQL数据库,它没有一个独立的服务进程,它是独立的、无进程的数据库(用起来它也像一个语言库),它对数据的读写操作是直达磁盘的。

    下面我们使用C语言来试用一个SQLite

    1 先到http://www.sqlite.org/download.html下载你的操作系统所对应的文件

    对方C语言的操作来说,只需要源码就可以了:

    Source Code

    sqlite-autoconf-3080701.tar.gz
    (1.91 MiB)

    一般而言我们也需要使用命令行对数据库中的数据进行增删改查操作,所以也下载下面的这两个文件:

    Precompiled Binaries for Windows

    sqlite-shell-win32-x86-3080701.zip
    (303.20 KiB)

    sqlite-dll-win32-x86-3080701.zip
    (335.37 KiB)

    2 在QT Creator中新建一个纯C工程(我这里名字叫做sqlite3_test),然后修改main.c为下面这样样子

    #include <stdio.h>
    #include <sqlite3.h>
    
    static int callback(void *NotUsed, int argc, char **argv, char **azColName){
        int i;
    
        for(i=0; i<argc; i++){
             printf("%s = %s
    ", azColName[i], argv[i] ? argv[i] : "NULL");
        }
    
        printf("
    ");
        return 0;
    }
    
    int main(int argc, char **argv)
    {
        sqlite3 *db;
        char *zErrMsg = 0;
        int rc;
    
        if( argc!=3 ){
            fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT
    ", argv[0]);
            return(1);
        }
    
        rc = sqlite3_open(argv[1], &db);
        if( rc ){
            fprintf(stderr, "Can't open database: %s
    ", sqlite3_errmsg(db));
            sqlite3_close(db);
            return(1);
        }
    
        rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
        if( rc!=SQLITE_OK ){
            fprintf(stderr, "SQL error: %s
    ", zErrMsg);
            sqlite3_free(zErrMsg);
        }
    
        sqlite3_close(db);
    
        return 0;
    }

    3

    将sqlite-autoconf-3080701.tar.gz解压出来,把其中的sqlite3.h拷贝出来放到Qt工程根目录下。

    将sqlite-dll-win32-x86-3080701.zip解压出来,把其中的sqlite3.dll拷贝到Qt工程目录下。

    将sqlite-shell-win32-x86-3080701.zip解压出来,把其中的sqlite3.ext拷贝到C:WindowsSystem32下面,这样在CMD命令行窗口下就可以直接运行sqlite3了(shell)。

    打开一个CMD窗口,然后到达你的工程根目录下面,然后运行sqlite3打开SQLite Shell,按下面的操作新建一个数据库并插入数据,以便于C语言去读取操作:

    sqlite> .tables
    sqlite> .open test.db
    sqlite> .tables
    sqlite> create table tbl1(one varchar(10), two smallint);
    sqlite> insert into tbl1 values('hello!', 10);
    sqlite> insert into tbl1 values('goodbye', 20);
    sqlite> select *from tbl1;
    hello!|10
    goodbye|20

     

    4 设置QT工程的编译选项

    第3步把该要的文件都拷贝到对应的目录了,然后现在编译还没有办法通过,需要一些设置。

    修改sqlite3_test.pro文件(红色为新增的)

    TEMPLATE = app
    CONFIG += console
    CONFIG -= app_bundle
    CONFIG -= qt
    
    SOURCES += main.c
    
    LIBS += sqlite3.dll
    
    include(deployment.pri)
    qtcAddDeployment()

    给应用程序添加运行参数,即从命令行运行的话需要执行sqlite3_test test.db "select * from tbl1"

    test.db "select * from tbl1"

    5 编译运行

    参考:

    Command Line Shell For SQLite http://www.sqlite.org/cli.html

    C-language interface to SQLite http://www.sqlite.org/c3ref/intro.html

    SQL As Understood By SQLite http://www.sqlite.org/lang.html

    SQLite3 C语言API入门 http://www.blogjava.net/xylz/archive/2012/09/25/388519.html

    SQLite3 API编程手册 http://www.cnblogs.com/hnrainll/archive/2011/09/08/2170506.html

  • 相关阅读:
    【转】Quartz企业作业调度配置参考
    [转]quartz中参数misfireThreshold的详解
    【转】MFC下拉框使用方法
    MFC中使用tinyxml
    【转】MYSQL中复制表结构的几种方法
    C++错误:重定义 不同的存储类
    【转】vbsedit提示“无法创建空文档”解决办法
    wordbreak和wordwrap
    css字体font
    js和jquery书籍
  • 原文地址:https://www.cnblogs.com/tfanalysis/p/4073756.html
Copyright © 2011-2022 走看看