C语言使用SQLite3数据库

原文: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\n", azColName[i], argv[i] ? argv[i] : "NULL");
    }

    printf("\n");
    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\n", argv[0]);
        return(1);
    }

    rc = sqlite3_open(argv[1], &db);
    if( rc ){
        fprintf(stderr, "Can‘t open database: %s\n", 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\n", 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:\Windows\System32下面,这样在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

时间: 2024-08-24 21:10:37

C语言使用SQLite3数据库的相关文章

C语言使用sqlite3数据库【第三节】

int sqlite3_get_table( sqlite3 *db, /* 数据库句柄 */ const char *zSql, /* SQL 语句 */ char ***pazResult, /* 查询结果 一大堆的一维数组*/ int *pnRow, /* 记录条数 也就是多少行*/ int *pnColumn, /* 字段数 也就是多少列 不过数据也是根据这个来定位的 例如:第一行:1,2,3 那么这个数值默认就是3,因为第一行是字段名,取的自然是列数,那么怎么取各个数据的位 置呢?答:

Cocos数据篇[3.4](6) ——SQLite3数据库基础用法

[唠叨] 在Cocos2d-x中,简单数据存储,可以使用UserDefault.那么如何存储大量,不规则的数据?我们可以使用 SQLite数据库 存储数据.SQLite 是使用非常广泛的 嵌入式数据库 ,它有小巧 .高效.跨平台.开源免费和易操作的特点.所以大量的被用于手机.PDA.MP3播放器.以及机顶盒设备. SQLite数据库是使用C语言来编写的,因此在Cocos2d-x使用SQLite也是得心应手. 本文介绍一下SQLite3数据库的基础用法:增删改查. PS:另外对于SQLite的可视

Cocos2d-x数据篇06:SQLite3数据库基础用法

尊重原创:http://cn.cocos2d-x.org/tutorial/show?id=2430 [前言] 在Cocos2d-x中,简单数据存储,可以使用UserDefault.那么如何存储大量,不规则的数据?我们可以使用 SQLite数据库 存储数据.SQLite 是使用非常广泛的 嵌入式数据库 ,它有小巧 .高效.跨平台.开源免费和易操作的特点.所以大量的被用于手机.PDA.MP3播放器.以及机顶盒设备. SQLite数据库是使用C语言来编写的,因此在Cocos2d-x使用SQLite也

Cocos移植到Android的一些问题-SQLite3数据库移植问题

首选我们讨论一下SQLite3数据库移植问题.我们在第14章节介绍了在Win32平台使用SQLite3数据库,我们介绍了两种配置环境的方法:一种是使用Cocos2d-x提供的SQLite3库配置,另一种是从SQLite官网下载源代码拷贝的工程中.第一种方法配置起来比较麻烦,关键是Cocos2d-x提供的SQLite3库只是Win32没有其它平台的,目录结构如下所示.<游戏工程目录>\cocos2d\external\sqlite3│  Android.mk│├─include│      sq

sqlite3数据库的简要应用

Sqlite3数据库升级方案的变化. 1,  若是讲要升级的数据库版本更高,则从低版本数据库中拷贝与新数据库相同字段的内容,其他字段按照默认值创建.A->B->C这样逐个版本升级,每个版本升级对应一段代码.若是升级到更低版本数据库,则将数据库全部删掉重建. 2,  直接比对当前运行的数据库版本,和将要升级的最新的数据库版本(A->C),把相同的字段保存下来,不同的字段直接按照默认值方式升级.这样可以来回升级,尽量保存了更多的字段的内容. //创建一个table表,在insert语句(按照

C语言连接MySQL数据库(课程设计总结)

刚结束课程设计,也预示着假期马上就要到来了.本次课程设计并不算难,无非就是让做一个XXX系统,实现用户的注册.登录.菜单管理.超级用户等等一些功能,到现在为止已经做过好几个了,所以基本流程都熟悉了!我觉的最值得总结的地方就是:C语言与数据库连接,这块内容!因为之前都是用文件实现的. ★平台 这次课程设计主要用到: ● VC ++ 6.0 ● mysql-5.0.18-win32 ● Navicat for MySQL(MySQL 图形化的工具) ★配置 在写代码之前首先要让编译器知道MySQL数

python sqlite3 数据库操作

SQLite3是python的内置模块,是一款非常小巧的嵌入式开源数据库软件. 1. 导入Python SQLite数据库模块 import sqlite3 2. python sqlite3模块的API """ sqlite3.connect(database [,timeout ,other optional arguments]) 该 API 打开一个到 SQLite 数据库文件 database 的链接.您可以使用 ":memory:" 来在 RA

iOS SQLite3数据库操作

iOS中数据持久化分为四种:属性列表.对象归档.SQLite3和Core Data,SQLite3数据库操作是一个必不或缺的技术. SQLite3简介 SQLite3数据库是移动端(iOS.Android.嵌入式)上认定的关系型数据库,与MySQL.Oracle等数据库相比,具有轻量级的优势,这就造成了体积小.迅速.简单功能依旧强大等优势. SQLite3语句特点 不区分大小写 每一句以:结尾 SQLite字段类型 integer:整型 real:浮点值 text:文本字符串 blob:二进制类

C语言连接mysql数据库

操作系统:win7/64 编译软件:VS2010 数据库:5.7.11 从C语言连接mysql数据库包含两个步骤: 1 初始化连接句柄结构 2 实际创建连接 测试代码1: #include "stdafx.h" #include <WinSock2.h> /*socket通信,系统头文件*/ #include <windows.h> #include <stdio.h> #include "mysql.h" #pragma com