sqlite3 linux 编译,linux下的sqlite3的编译安装和使用

本文详细介绍了如何在RedHat Linux 9.0上编译、安装和使用SQLite,包括编译源码的步骤、解决编译错误的方法、基本的SQLite语法以及如何在C/C++中使用SQLite的API进行数据操作。通过实例展示了创建数据库、创建表、插入数据、查询和删除数据的过程,适合初学者入门。
摘要由CSDN通过智能技术生成

嵌入式数据库SQLite的编译、安装和使用

下文介绍的内容都是基于 RedHat Linux 9.0 平台的。

引言:sqlite简介

sqlite是嵌入式SQL数据库引擎SQLite(SQLite Embeddable SQL Database Engine)的一个扩展。

SQLite是一个实现嵌入式SQL数据库引擎小型C语言库(C library),实现了独立的,可嵌入的,零配置的SQL数据库引擎。

特性包括:事务操作是原子,一致,孤立,并且持久的,即使在系统崩溃和电源故障之后。零配置——不需要安装和管理。

实现了绝大多数SQL92标准。整个数据库存储在一个单一的文件中。数据库文件可以在不同字节序的机器之间自由地共享。

支持最大可达2T的数据库。字符串和BLOB类型的大小只受限于可用内存。完整配置的少于250KB,忽略一些可选特性的少于150KB。

在大多数常见操作上比流行的客户/服务器数据库引擎更快。 简单易于使用的API。 内建TCL绑定。

另外提供可用于许多其他语言的绑定。具有良好注释的源代码,代码95%有较好的注释。

独立:没有外部依赖。源代码位于公共域,可用于任何用途。

用 SQLite连接的程序可以使用SQL数据库,但不需要运行一个单独的关系型数据库管理系统进程(separate RDBMS process)。

SQLite不是一个用于连接到大型数据库服务器(big database server)的客户端库(client library),

而是非常适合桌面程序和小型网站的数据库服务器。SQLite直接读写(reads and writes directly)在硬盘上的数据库文件。

本文将告诉你怎么开始体验 SQLite ,这里没有长长的说明和冗烦的配置。

一、sqlite-3.3.8编译安装

请阅读在安装包里的 INSTALL或者README 文件。SQLite已经内置了,你不需要安装任何附加的软件(additional software)。

Windows users可以下载SQLite扩展DLL。

这里简单介绍一下:

假设你得到的是源代码sqlite-3.3.8.tar.gz,这里将告诉你怎么编译它。

解压sqlite-3.3.8.tar.gz 到 /home目录下

For example:

tar zxvf sqlite-3.3.8.tar.gz -C /home

cd /home

mkdir sqlite-3.3.8-ix86

cd /home/sqlite-3.3.8-ix86/

../sqlite-3.3.8/configure --prefix=/home/sqlite-3.3.8-ix86

编译并安装,然后生成帮助文档

make && make install && make doc

如果出现下列错误

../sqlite-3.3.8/src/tclsqlite.c: In function `DbUpdateHandler':

../sqlite-3.3.8/src/tclsqlite.c:333: warning: passing arg 3 of `Tcl_ListObjAppendElement' makes pointer from integer without a cast

../sqlite-3.3.8/src/tclsqlite.c: In function `tclSqlFunc':

../sqlite-3.3.8/src/tclsqlite.c:419: warning: passing arg 1 of `Tcl_NewByteArrayObj' discards qualifiers from pointer target type

...

这个都是tcl相关的错误,可以先安装ActiveTcl以解决.假如你不需要tcl支持,那么这个错误可以这样避免:

cd /home/sqlite-3.3.8-ix86/

../sqlite-3.3.8/configure --disable-tcl --prefix=/home/sqlite-3.3.8-ix86

编译并安装,然后生成帮助文档

make && make install && make doc

不出意外,将不会出现错误,那么

Libraries have been installed in:

/home/sqlite-3.3.8-ix86/lib

库文件已经生成在 /home/sqlite-3.3.8-ix86/lib 目录下

可执行文件sqlite3已经生成在 /home/sqlite-3.3.8-ix86/bin 目录下

下面创建一个新的数据库文件名叫"zieckey.db" (当然你可以使用不同的名字) 来测试数据库.

直接输入: /home/sqlite-3.3.8-ix86/bin/sqlite3 test.db

如果出现下面字样表明编译安装已经成功了.

SQLite version 3.3.8

Enter ".help" for instructions

sqlite>

二 、SQLite的基本语法

这一章我们将会学习到sqlite的基本语法,sqlite的语法现象和SQL92是比较相象的,

或者说sqlite3兼容大部份SQL92的语法现象。

下面我们看看怎么用这些语法现象来创建数据库以及对数据库的各种操作。

2.1 新建一个数据库

例如我们想新建一个数据库命名为zieckey.db ,可以直接在shell下输入 sqlite3 zieckey.db ,

前提是:先进放sqlite的安装文件夹下然后执行下面的操作:

# ./sqlite3 zieckey.db

SQLite version 3.0.8

Enter ".help" for instructions

sqlite>

这里 SQLite version 3.0.8 是SQLite的版本信息。也就是说本文使用的sqlite版本为 version 3.0.8 .

这样就创建了一个新的数据库文件,命名为 zieckey.db

2.2 创建表和插入值

刚刚我们创建了一个新的数据库zieckey.db,加入我们想在其中新建一个名为 SensorData 的表,其包含五个列元素。

可以用CREATE TABLE语法命令。

CREATE TABLE语句基本上就是"CREATE TABLE"关键字后跟一个新的表名以及括号内的一堆定义和约束。表名可以是字符串或者标识符。以"sqlite_"开头的表名是留给sqlite数据库引擎使用的。每个字段的定义是字段名后跟字段的数据类型,接着是一个或多个的字段约束。字段的 数据类型并不限制字段中可以存放的数据。更多信息,参见sqlite的CREATE TABLE语法。

这里具体作法如下:

# sqlite3 zieckey.db

SQLite version 3.0.8

Enter ".help" for instructions

sqlite> CREATE TABLE SensorData(

...> ID INTEGER PRIMARY KEY,

...> SensorID INTEGER,

...> SiteNum INTEGER,

...> Time VARCHAR(12),

...> SensorParameter REAL

...> );

注意sqlite下除了特殊命令都要以分号 “;” 结尾,否则它将一直等待第一个分号的出现才判断这条命令结束。

现在我们可以用 schema 命令看看我们刚刚创建的表。具体作法如下:

sqlite> .schema

CREATE TABLE SensorData(

ID INTEGER PRIMARY KEY,

SensorID INTEGER,

SiteNum INTEGER,

Time VARCHAR(12),

SensorParameter REAL

);

sqlite>

.schema 是用来查看数据库中所有的表的定义内容。如果后面跟了具体的表名称,则显示该表的内容。

假如我们想想SensorData表中插入具体列元素值,该怎么办呢?这里可以用INSERT语句。

INSERT语句有两种基本形式。一种带有"VALUES"关键字,在已有表中插入一个新的行。若不定义字段列表,那么值的数目将与表中的字段数目相同。否则值的数目须与字段列表中的字段数目相同。不在字段列表中的字段被赋予缺省值或NULL(当未定义缺省值)。

INSERT的第二种形式从SELECT语句中获取数据。若未定义字段列表,则从SELECT得到的字段的数目必须与表中的字段数目相同,否则应与定义的字段列表中的字段数目相同。SELECT的每一行结果在表中插入一个新的条目。SELECT可以是简单的或者复合的。如果SELECT语句带有 ORDER BY子句,ORDER BY会被忽略。

这里我们可以这样做:

sqlite> INSERT INTO "SensorData" VALUES(NULL, 1, 0, '200605011206', 18.9);

sqlite> INSERT INTO "SensorData" VALUES(2, 1, 0, '200605011306', 16.4);

sqlite> INSERT INTO "SensorData" VALUES(3, 1, 0, '200605011406', 15.3);

sqlite> INSERT INTO "SensorData" VALUES(4, 1, 0, '200605011506', 15.5);

sqlite>

很简单对不对?简直太easy了。

2.3 在线帮助

前面两节,我们已经知道了sqlite语法最基本的用法。下面可以看看如何获得联机帮助。

很简单,输入 .help 就行了。注意要help前加上“.”,这与上面说的以分号结尾有点不同,因为help命令被视为特殊命令。

sqlite> .help

.databases List names and files of attached databases

.dump ?TABLE? ... Dump the database in an SQL text format

.echo ON|OFF Turn command echo on or off

.exit Exit this program

.explain ON|OFF Turn output mode suitable for EXPLAIN on or off.

.header(s) ON|OFF Turn display of headers on or off

.help Show this message

.import FILE TABLE Import data from FILE into TABLE

.indices TABLE S

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值