Linux下SQLite数据库安装操作与编程

 

 

//----------------------------------------------------

//AUTHOR: lanyang123456

//DATE: 2012-6-20

//----------------------------------------------------

 

环境

Linux 操作系统: Fedora 16

内核:3.1

sqlite 版本:3.7.13

 

目录

1.编译与安装

1.1下载sqlite源码

1.2编译与安装

2.sqlite数据库管理

3.sqlite数据库编程

参考

 


 

1.编译与安装

 

1.1下载sqlite源码

 

官网下载地址

 

http://www.sqlite.org/download.html

选择下载项:

Source Code

sqlite-autoconf-3071300.tar.gz
(1.76 MiB)

 

下载得到文件

sqlite-autoconf-3071300.tar.gz

 

1.2编译与安装

 

解压sqlite压缩文件

tar –zvxf sqlite-autoconf-3071300.tar.gz

得到文件sqlite-autoconf-3071300

 

下面的一些操作参考sqlite源文件中的INSTALL文件,这是一份好的安装说明。

 

进入sqlite-autoconf-3071300目录

[root@localhost ~]# cd /home/sqlite-autoconf-3071300/

配置

[root@localhost sqlite-autoconf-3071300]# ./configure

编译

[root@localhost sqlite-autoconf-3071300]# make

安装

[root@localhost sqlite-autoconf-3071300]# make install

 

 

默认安装路径为/usr/local/及系统标准目录

头文件 sqlite3.h sqlite3ext.h安装在 /usr/local/include

以及头文件标准目录 /usr/include

 

库文件libsqlite3.a  libsqlite3.so.0.8.6   libsqlite3.so.0  libsqlite3.so

安装在/usr/local/lib目录下

并且共享库文件libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6安装在系统库文件标准目录/usr/lib

 

可执行文件sqlite3安装在 /usr/local/bin目录下以及系统可执行标准目录/usr/bin

 

帮助文档man安装在/usr/local/share目录下

 

2.数据库管理

 

创建数据库文件

 

[root@localhost /]# sqlite3 mydbtest

SQLite version 3.7.13 2012-06-11 02:05:22

Enter ".help" for instructions

Enter SQL statements terminated with a ";"

sqlite>

出现sqlite>提示符

查看目前的数据库。注意数据库操作命令以.开头。

sqlite> .database

seq  name             file                                                     

---  ---------------  ----------------------------------------------------------

0    main             //mydbtest                                                

sqlite>

列出当前使用的数据库mydbtest

数据库mydbtest文件创建在执行命令# sqlite3 mydbtest时,命令行所在的目录。

 

创建表

sqlite> create table mytable(name varchar(80),num smallint);

 

列出表

查看创建了哪些表

sqlite> .tables

mytable

sqlite>

查找某个表

sqlite> .tables my

sqlite> .tables mytable

mytable

sqlite>

 

插入记录

sqlite> insert into mytable values('lian',19);

sqlite> insert into mytable values('zheng',20);

sqlite> insert into mytable values('Qing',23);

 

查询

sqlite> select * from mytable;

lian|19

zheng|20

Qing|23

sqlite>

 

模式查看表结构

sqlite> .schema

CREATE TABLE mytable(name varchar(80),num smallint);

sqlite> 

 

从文件向表中导入数据

创建文件data.txt,内容如下

 

LTian Hong|19

Eng Lish|20

Gao Yuan|23

Wei Da|26

 

 

其中“|”是分隔符,分隔符左右不要有空格

 

导入数据前查询

sqlite> select * from mytable;

lian|19

zheng|20

Qing|23

sqlite> .import data.txt mytable

 

导入数据后查询

sqlite> select * from mytable;

lian|19

zheng|20

Qing|23

LTian Hong|19

Eng Lish|20

Gao Yuan|23

Wei Da|26

sqlite>

 

生成形成数据库表的SQL脚本

sqlite> .dump mytable

PRAGMA foreign_keys=OFF;

BEGIN TRANSACTION;

CREATE TABLE mytable(name varchar(80),num smallint);

INSERT INTO "mytable" VALUES('lian',19);

INSERT INTO "mytable" VALUES('zheng',20);

INSERT INTO "mytable" VALUES('Qing',23);

INSERT INTO "mytable" VALUES('LTian Hong',19);

INSERT INTO "mytable" VALUES('Eng Lish',20);

INSERT INTO "mytable" VALUES('Gao Yuan',23);

INSERT INTO "mytable" VALUES('Wei Da',26);

COMMIT;

sqlite>

 

数据导出

 

将输出定向到文件

sqlite> .output create.sql

sqlite> .dump mytable

 

将数据库表生成的SQL脚本输出到create.sql文件

 

将输出恢复到标准输出

sqlite> .output stdout

sqlite>

 

打印SQLite环境变量到设置

sqlite> .show

     echo: off

  explain: off

  headers: off

     mode: list

nullvalue: ""

   output: stdout

separator: "|"

    stats: off

    width:

sqlite>

退出数据库,使用.quit.q

sqlite> .quit

[root@localhost mysqlite_databasefile]#

 

 

特殊用法

命令行下直接使用

[root@localhost mysqlite_databasefile]# sqlite3 mydbtest "select * from mytable;"

lian|19

zheng|20

Qing|23

[root@localhost mysqlite_databasefile]#

 

 

3.数据库编程

 

系统头文件标准目录/usr/include下有头文件sqlite3.h  sqlite3ext.h

所以编程时可直接使用 #include <sqlite3.h>包含头文件。

若系统头文件标准目录下没有需要的头文件,则需要将头文件与程序源文件放在同一目录下,并使用#include “sqlite3.h”,或者其它方法。

 

3.1编写源代码

#include <stdio.h>

#include <stdlib.h> //exit等函数的声明

#include <sqlite3.h>

………………

详细代码见程序源文件http://download.csdn.net/detail/lanyang123456/4384399

3.2编译源代码

[root@localhost mysqlite_databasefile]# gcc -o mysqlite3 mysqlite.c

/tmp/ccuW3QVl.o: In function `inquire_Usecb':

mysqlite.c:(.text+0xa7): undefined reference to `sqlite3_exec'

/tmp/ccuW3QVl.o: In function `inquire_nocb':

mysqlite.c:(.text+0x11d): undefined reference to `sqlite3_get_table'

mysqlite.c:(.text+0x1ab): undefined reference to `sqlite3_free_table'

/tmp/ccuW3QVl.o: In function `createnTable':

mysqlite.c:(.text+0x1ef): undefined reference to `sqlite3_exec'

/tmp/ccuW3QVl.o: In function `insertRecord':

mysqlite.c:(.text+0x23f): undefined reference to `sqlite3_exec'

mysqlite.c:(.text+0x287): undefined reference to `sqlite3_exec'

mysqlite.c:(.text+0x2cf): undefined reference to `sqlite3_exec'

/tmp/ccuW3QVl.o: In function `deleteRecord':

mysqlite.c:(.text+0x334): undefined reference to `sqlite3_exec'

mysqlite.c:(.text+0x381): undefined reference to `sqlite3_get_table'

mysqlite.c:(.text+0x40f): undefined reference to `sqlite3_free_table'

/tmp/ccuW3QVl.o: In function `main':

mysqlite.c:(.text+0x436): undefined reference to `sqlite3_open'

mysqlite.c:(.text+0x44d): undefined reference to `sqlite3_errmsg'

mysqlite.c:(.text+0x474): undefined reference to `sqlite3_close'

mysqlite.c:(.text+0x4e2): undefined reference to `sqlite3_close'

collect2: ld返回 1

 

编译时指定库文件名sqlite3,系统会在库文件默认目录/lib/usr/lib搜索库

[root@localhost mysqlite_databasefile]# gcc -o mysqlite3 mysqlite.c -lsqlite3

3.3执行程序

[root@localhost mysqlite_databasefile]# ./mysqlite3

You have opened a sqlite3 database successfully!

row:4 column = 5

The result of querying is :

azResult[0] = ID

azResult[1] = SensorID

azResult[2] = SiteNum

azResult[3] = Time

azResult[4] = SensorParameter

azResult[5] = 1

azResult[6] = 101

azResult[7] = 261

azResult[8] = 20100314

azResult[9] = 18.9

azResult[10] = 2

……………………

Total column is 5

字段名: ID---->字段值:1

字段名: SensorID---->字段值:101

字段名: SiteNum---->字段值:261

字段名: Time---->字段值:20100314

字段名: SensorParameter---->字段值:18.9

==========================

………………

Total column is 5

字段名: ID---->字段值:3

字段名: SensorID---->字段值:667

字段名: SiteNum---->字段值:290

字段名: Time---->字段值:20110315

字段名: SensorParameter---->字段值:27.0

==========================

Total column is 5

字段名: ID---->字段值:4

字段名: SensorID---->字段值:865

字段名: SiteNum---->字段值:300

字段名: Time---->字段值:20120616

字段名: SensorParameter---->字段值:323.0

==========================

operate failed: near "DELETE ": syntax error

row:4 column:5

After deleting,the result of querying is :

azResult[0] = ID

azResult[1] = SensorID

azResult[2] = SiteNum

azResult[3] = Time

azResult[4] = SensorParameter

azResult[5] = 1

azResult[6] = 101

azResult[7] = 261

azResult[8] = 20100314

…………

[root@localhost mysqlite_databasefile]#

SQL删除语句出现语法错误,并由输出可以得到其错误的原因。经检查发现 DELETE后面多了空格,修改后,执行结果如下

 

[root@localhost mysqlite_databasefile]# ./mysqlite3

You have opened a sqlite3 database successfully!

row:4 column = 5

The result of querying is :

azResult[0] = ID

azResult[1] = SensorID

azResult[2] = SiteNum

azResult[3] = Time

……………………

==========================

Total column is 5

字段名: ID---->字段值:4

字段名: SensorID---->字段值:865

字段名: SiteNum---->字段值:300

字段名: Time---->字段值:20120616

字段名: SensorParameter---->字段值:323.0

==========================

row:3 column:5

After deleting,the result of querying is :

azResult[0] = ID

azResult[1] = SensorID

…………

[root@localhost mysqlite_databasefile]#

成功删除第4条记录

详细执行结果见执行结果文件http://download.csdn.net/detail/lanyang123456/4384399

 

 

参考 

SQLite 官网

http://www.sqlite.org/

 

SQLite中文网

http://www.sqlite.com.cn/

 

SQLite3使用教学 数据库使用说明

http://www.sqlite.com.cn/MySqlite/4/378.Html

 

嵌入式数据库SQLite的一份教程

http://www.sqlite.com.cn/MySqlite/3/380.Html

 

sqlite3编程笔记 .

http://blog.csdn.net/wl_haanel/article/details/6231417

 

SQLite3 API编程手册

http://www.cnblogs.com/hnrainll/archive/2011/09/08/2170506.html

 

几篇关于嵌入式数据库的简介,包括SQLite  Berkeley DB

http://blog.chinaunix.net/uid/9563036/frmd/23812.html

 

嵌入式数据库SQLite移植到S3C2410的方法 .

http://blog.csdn.net/liuzhidong123/article/details/6827379

 

sqlite嵌入式数据库在arm-linux下的编译全攻略

http://blog.chinaunix.net/uid-9563036-id-352307.html

 

嵌入式数据库sqliteMotorola Coldfire + uclinux下的移植

http://www.sqlite.com.cn/MySqlite/6/379.Html

 

SQLITE3使用总结 windows下编程接口说明

http://hi.baidu.com/llhg/blog/item/0c3c0da89d83d6b3cb130cdf.html

 

sqlite3使用简介  Windows下编程接口说明

http://www.cnblogs.com/kfqcome/archive/2011/06/27/2136999.html

 

Sqlite快速上手使用指南 WindowsSQLite图形界面使用

http://www.cnblogs.com/yjmyzz/archive/2010/02/18/1669210.html

 

Linux configure关于交叉编译的参数设置

http://tech.ccidnet.com/art/2583/20080307/1383653_1.html

 

 转载请注明出处。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux下可以使用SQLite数据库进行操作,SQLite是一种轻量级的关系型数据库,可以在Linux系统中进行安装和使用。SQLite数据库的操作可以通过命令行工具或者编程语言进行实现。 在Linux系统中,可以使用命令行工具sqlite3来进行SQLite数据库的操作。通过sqlite3命令可以打开一个SQLite数据库,然后可以使用SQL语句进行数据的增删改查等操作。例如,可以使用以下命令打开一个SQLite数据库sqlite3 test.db 其中test.db是数据库文件的名称,如果该文件不存在,则会自动创建一个新的数据库文件。然后可以使用SQL语句进行数据操作,例如: 创建表: CREATE TABLE student (id INTEGER PRIMARY KEY, name TEXT, age INTEGER); 插入数据: INSERT INTO student (id, name, age) VALUES (1, '张三', 20); 查询数据: SELECT * FROM student; 更新数据: UPDATE student SET age = 21 WHERE id = 1; 删除数据: DELETE FROM student WHERE id = 1; 除了命令行工具,还可以使用编程语言来进行SQLite数据库的操作。在Linux系统中,可以使用C、C++、Python等编程语言来进行SQLite数据库的操作。例如,在Python中可以使用sqlite3模块来进行SQLite数据库的操作,例如: import sqlite3 # 打开数据库连接 conn = sqlite3.connect('test.db') # 创建游标对象 cursor = conn.cursor() # 创建表 cursor.execute('CREATE TABLE student (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)') # 插入数据 cursor.execute("INSERT INTO student (id, name, age) VALUES (1, '张三', 20)") # 查询数据 cursor.execute('SELECT * FROM student') result = cursor.fetchall() print(result) # 更新数据 cursor.execute("UPDATE student SET age = 21 WHERE id = 1") # 删除数据 cursor.execute("DELETE FROM student WHERE id = 1") # 提交事务 conn.commit() # 关闭游标和连接 cursor.close() conn.close() 以上是在Python中使用sqlite3模块进行SQLite数据库的操作的示例代码。通过编程语言进行SQLite数据库的操作,可以更加灵活和方便地进行数据处理。 ### 回答2: LinuxSQLite数据库操作是一种简易和轻量级的数据库操作方式,该数据库嵌入式在应用程序中,因此应用程序与数据库的交互非常方便,而且无需配置和管理数据库服务。 在Linux系统中,我们可以安装SQLite库并通过C语言或其他编程语言来操作SQLite数据库。一般情况下,SQLite库已经预安装在Linux系统中,我们可以通过终端命令'which sqlite3'来确认。 SQLite数据库的数据类型是基本数据类型,如文本、整数、实数和布尔型等,并且不需要创建表空间、用户等等,使用方便。 下面是SQLite数据库的常用操作方法: 1. 创建数据库并连接 可以使用终端命令Sqlite3来创建一个新的SQLite数据库并链接到它: sqlite3 MyDatabase.db 此时我们进入了一个SQLite的控制台,在这里可以执行常用的SQL命令,例如创建表等。 2. 创建表 使用CREATE TABLE 语句来创建表: CREATE TABLE table_name ( column1 datatype constraint, column2 datatype constraint, ..... ); 例如创建一个名为student的表: CREATE TABLE student ( id integer PRIMARY KEY, name text NOT NULL, age integer CHECK (age >= 16) ); 3. 插入数据 使用INSERT INTO语句来向表中插入数据: INSERT INTO table_name (col1, col2, ..., coln) VALUES (value1, value2, ..., valuen); 例如向上面的student表中插入数据: INSERT INTO student (id, name, age) VALUES (1, 'Tom', 18); INSERT INTO student (id, name, age) VALUES (2, 'Jack', 17); 4. 查询数据 使用SELECT语句来查询数据: SELECT column1, column2, ..., columnn FROM table_name WHERE condition; 例如查询student表中的所有记录: SELECT * FROM student; 5. 更新数据 使用UPDATE语句来更新表中的数据: UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; 例如将id为1的记录的年龄修改为20: UPDATE student SET age = 20 WHERE id = 1; 6. 删除数据 使用DELETE语句来删除表中的数据: DELETE FROM table_name WHERE condition; 例如删除id为2的记录: DELETE FROM student WHERE id = 2; 以上就是LinuxSQLite数据库的基本操作方法。由于SQLite数据库非常轻量级,所以在小型项目中使用SQLite数据库是非常方便的,它可以通过一些简单的命令就能够完成对数据库的操作,从而大幅度减少了开发人员的工作量。同时,SQLite数据库还支持跨平台使用,这在实际的开发过程中也非常有用。 ### 回答3: SQLite是一种轻型的、基于文件的关系型数据库系统,与MySQL、PostgreSQL等数据库系统相比较,它更加简单易用和灵活可靠,被广泛用于各种移动设备和嵌入式系统。Linux是一个开放源代码的计算机操作系统,拥有一系列强大的命令行工具和图形界面工具,可以很方便地对SQLite数据库进行操作。 在Linux系统中,我们可以通过安装sqlite3命令行工具来进行SQLite数据库的操作。首先,我们需要创建一个SQLite数据库文件,可以使用以下命令: ``` $ sqlite3 database.db ``` 这条命令将会创建一个名为database.db的空白SQLite数据库文件,并进入sqlite3交互式环境。在这个环境下,我们可以通过自己的SQL语句来操作数据库。 创建表格 表格是SQLite中最基本的数据存储方式,我们可以使用CREATE TABLE语句来创建一个新的表格。例如,我们要创建一个名为students的表格,其中包含学生的姓名、年龄和成绩三个字段: ``` sqlite> CREATE TABLE students ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER, score REAL ); ``` 这个命令将会在当前的数据库中创建一个名为students的表格,其中id为整数类型主键,name为文本类型,必填项,age为整数类型,score为实数类型。 插入数据 新建表格之后,我们可以使用INSERT INTO语句来向表格中插入一条新的记录。例如,要向students表格中插入一条记录,可以使用以下命令: ``` sqlite> INSERT INTO students ( name, age, score ) VALUES ( 'Tom', 18, 95.5 ); ``` 这个命令将会向students表格中插入一条新记录,其中包含姓名Tom、年龄18、成绩95.5三个字段。如果成功插入记录,SQLite将会返回一个整数值1。 查询数据 除了插入数据,我们还可以使用SELECT语句来查询表格中的数据。例如,要查询所有学生的姓名和成绩,可以使用以下命令: ``` sqlite> SELECT name, score FROM students; ``` 这个命令将会从students表格中查询出所有记录的姓名和成绩,并以表格的形式进行输出。 更新数据 有时候我们需要对已有的记录进行修改,可以使用UPDATE语句来更新表格中的数据。例如,要将学生Tom的成绩修改为90,可以使用以下命令: ``` sqlite> UPDATE students SET score=90 WHERE name='Tom'; ``` 这个命令将会在students表格中查找出姓名为Tom的记录,并将其成绩修改为90。 删除数据 如果需要删除students表格中的某条记录,可以使用DELETE FROM语句来删除。例如,要删除姓名为Tom的学生记录,可以使用以下命令: ``` sqlite> DELETE FROM students WHERE name='Tom'; ``` 这个命令将会在students表格中查找出所有姓名为Tom的记录,并将其全部删除。 总之,Linux系统自身提供了非常强大的命令行工具和广泛的应用软件库,可以很方便地操作SQLite数据库。对于开发者而言,使用SQLite等嵌入式数据库系统可以大幅减少开发成本和复杂度,提高系统性能和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值