Sqlite数据库在各种平台下的C语言应用程序开发windows,linux,arm-linux

windows平台:

平台软件:vc++6.0

sqlite3 for windows

sqlite.org上下载得到最新的Windows版本的sqlite,只需要sqlite3_6_23_1.zip,sqlite-amalgamation-3_6_23_1.zip和sqlitedll-3_6_23_1.zip,其中sqlite3_6_23_1.zip中包含sqlite3.exe,在DOS命令行下输入“sqlite3.exe所在路径+sqlite3.exe+xx.db”即可建立xx.db数据库。接着就可以建立你需要的表了。如果有不会的sqlite3命令可以输入.help查询sqlite-amalgamation-3_6_23_1.zip是sqlite的源码包,其中包含sqlite3.c(sqlite的API实现函数),sqlite3.h(sqlite的API),shell.c等等。sqlitedll-3_6_23_1.zip中包含了sqlite3.def(用于生成sqlite3.lib)和sqlite3.dll()。

windows程序员大多熟悉vc6.0,所以我选择在vc6.0作为开发平台,当然选择vs2005和vs2008也是可以的。首先按照常规的方法建立工程项目,在项目源文件中要包含sqlite3.h 头文件,然后将sqlite3.h复制到工程的源文件目录中。

接着,我们需要生成sqlite3.lib。在DOS命令行下输入“D:/Program Files/Microsoft Visual Studio/VC98/Bin/LIB /DEF sqlite3.def /用于存放sqlite3.lib的目录”,这样我们就得到了sqlite3.lib文件。将sqlite3.lib复制到../VC++.6.0.with.SP6/VC6CN/VC98/LIB,然后在Project Setting的Link中的对象库模块中增加sqlite.lib文件。大功告成。

Linux(redhat 9)平台:

平台软件:gcc编译器

sqlite3 for Linux

在google上搜索下载Linux版本的3.5.6版本的sqlite,得到sqlite-3.5.6.tar.gz。首先,tar zxvf sqlite-3.5.6.tar.gz -C /home

cd /home

mkdir sqlite3

cd /home/sqlite3/

../sqlite-3.5.6/configure --disable-tcl --prefix=/home/sqlite3

make && make install && make doc

这样之后,我们的sqlite3的库文件目录是:/home/sqlite3/lib
可执行文件 sqlite3 的目录是: /home/sqlite3/bin
文件 sqlite3.h 的目录是: /home/include

直接在shell命令行中输入: /home/sqlite3/bin/sqlite3 test.db 建立test.db数据库
如果出现下面字样表明编译安装已经成功了.
sqlite version 3.3.8
Enter ".help" for instructions
sqlite>


sqlite数据库移植:

软件:Arm-Linux交叉编译工具链(cross-2.95.3.tar.bz2) sqlite3 for Linux

硬件:s3c2410处理器


arm-linux-gcc的安装
将arm-linux-gcc的压缩包在/目录下解压缩 tar zxvf cross-2.95.3.tar.bz2

sqlite的安装:

sqlite-3.5.6.tar.gz下载到/root目录下。然后,通过下列命令解压缩sqlite-3.5.6.tar.gz:

# tar zxvf sqlite-3.5.6.tar.gz

sqlite-3.5.6/目录下有一个Makefile范例文件Makefile.linux-gcc。首先通过下面的命令拷贝此文件重命名为Makefile:

# cp Makefile.linux-gcc Makefile

接下来,用vi打开Makefile文件并手动修改Makefile文件内容

对Makefile的修改主要包括两个方面:首先是将编译器、归档工具等换成交叉工具链中的对应工具,其次是去掉与TCL相关的编译选项,因为认情况下,将会编译sqlite3的Tcl语言绑定,但是在移植到ARM-Linux的时候并不需要和Tcl语言绑定在一起,因此将两个与TCL有关的行注释掉。Makefile文件修改情况如表1所示。

Makefile文件修改情况

17行:TOP = ../sqlite 修改为 TOP = .

73行:TCC = gcc -O6 修改为 TCC = arm-linux-gcc -O6

81行:AR = ar cr 修改为 AR = arm-linux-ar cr

83行:RANLIB = ranlib 修改为 RANLIB = arm-linux-ranlib

86行:MKSHLIB = gcc �shared 修改为 MKSHLIB = arm-linux-gcc �shared

注释掉:TCL_FLAGS = -I/home/drh/tcltk/8.4linux

LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl

接下来,还需要修改一个文件是main.mk,因为Makefile包含了这个文件。找到main.mk文件中的下面这一行:

select.o table.o tclsqlite.o tokenize.o trigger.o /

把它替换成:

select.o table.o tokenize.o trigger.o /

也就是把该行上的tclsqlite.o去掉。这样编译的时候将不会编译sqlite3的Tcl语言绑定。自此,修改工作就完成了,接下来就可以开始编译sqlite3了,这通过make命令即可完成:

# make

编译完成之后,将在sqlite3.3.6/目录下生成函数文件libsqlite3.a和头文件sqlite3.h。头文件sqlite3.h中声明了所有API接口函数原型,所有sqlite3应用程序都必须包含这个头文件。库函数文件libsqlite3.a(静态库)包含了所有API接口函数的实现,静态编译sqlite3应用程序时必须和这个库函数文件链接在一起。


然后你就可以编写你的C语言应用程序了。交叉编译时用下面的方式(假设你的源文件是test.c):

# arm-linux-gcc -I /root/sqlite-3.5.6/ -L /root/sqlite-3.3.6 -o test test.c -lsqlite3 -static

-I 指明了头文件sqlite3.h所在目录 -L 指明了静态库libsqlite3.a所在目录

�lsqlite3指明要链接静态库文件libsqlite3.a -static指明是静态编译,这样你的test应用程序就可以运行在目标板上了。

接着需要将sqlite数据库移植到目标板上,在PC机的目录/usr/lib 中找到libsqlite3.so libsqlite3.so.0. libsqlite3.so.0.8.6三个库文件,去掉调示信息后把它们通过超级终端复制到开发板的/usr/lib目录下

Arm-linux-strip libsqlite3.so

Arm-linux-strip libsqlite3.so.0

Arm-linux-strip libsqlite3.so.0.8.6

cp �arf libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6 /usr/lib

注:因为libsqlite3.so,libsqlite3.so.0是链接到libsqlite3.so.0.8.6的,所以拷贝是要加-arf的

去掉/root/sqlite3.3.6目录下的sqlite3的调示信息后,将它下载到开发板的/usr/bin目录

cp sqlite3 /usr/bin

这样就可以在开发板上直接运行sqlite3了。在超级终端中可以直接运行sqlite3。 例如:/usr/bin>sqlite3 test.db

sqlite>create table user(id,password,balance);

sqlite>insert into user values(1,111111,1000);

sqlite>select * from user;

1|111111|1000
原文地址http://forum.eepw.com.cn/thread/140274/1
注:如果需要sqlite-3.3.6tar.gz包的话,可以在我的下载里找到。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


SQLite架构简单,又有Json计算能力,有时会承担Json文件/RESTful的计算功能,但SQLite不能直接解析Json文件/RESTful,需要用Java代码硬写,或借助第三方类库,最后再拼成insert语句插入数据表,代码非常繁琐,这里就不展示了。参考前面的代码可知,入库的过程比较麻烦,不能只用SQL,还要借助Java或命令行。SPL是现代的数据计算语言,属于简化的面向对象的语言风格,有对象的概念,可以用点号访问属性并进行多步骤计算,但没有继承重载这些内容,不算彻底的面向对象语言。...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。本教程将告诉您如何使用 SQLite 编程,并让你迅速上手。.................................
安卓开发,利用SQLite实现登陆注册功能
相比大多数数据库而言,具有等优势,广泛应用于、等领域。
有时候,一个项目只有一个数据库,比如只有SQLite,或者MySQL数据库,那么我们只需要使用一个固定的数据库即可。但是一个项目如果写好了,有多个用户使用,但是多个用户使用不同的数据库,这个时候,我们就需要把软件设计成可以连接多个数据库的模式,用什么数据库,就配置什么数据库即可。4.Users实体类,这个实体类要和数据库一样的,形成一一对应的关系。11.Sqlite数据库,需要在代码里面创建数据库,建立表,再建立数据。8.我们开启MySQL数据库,然后进行调试,看程序的结果。2.安装SqlSugar。
基于Android的背单词软件,功能强大完整。
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统。说白了就是使用起来轻便简单,
Android的简单购物车案例
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库...
Qt设计较为美观好看的登录注册界面(包含SQLite数据库以及TCP通信的应用)
SQLite是用C语言开发的跨平台小型数据库,可嵌入其他开发语言,也可在单机执行。SPL是用Java开发的跨平台的数据计算语言,可嵌入Java,可在单机执行,可以数据计算服务的形式被远程调用。两者的代码都是解释执行的。...
新建库.openDATA_BASE;新建表createtableLIST_NAME(DATA);语法:NAME关键字...<用逗号分割>删除表droptableNAME;查看表.schema查看表信息新建数据insertintoLIST_NAMEvalues();语法:CLASS,PARAMETER...,CLASS是类别,PARAMETER是参数<用逗号分割新建的
importsqlite3classDemo01:def__init__(self):self.conn=sqlite3.connect("sql_demo_001.db")self.cursor1=self.conn.cursor()self.cursor1.execute("select*fromtable_001wherename=?andid=?",('ssss&#0
 在客户端配置文件<configuration>节点下,添加:<connectionStrings>      <add name="localdb" connectionString="Data Source=config/local.db;Version=3;UseUTF16Encoding=True;" providerName="System.Data.SQLite.SQLiteFactory"/&g
提到锁就不得不说到死锁的问题,而SQLite也可能出现死锁。下面举个例子:连接1:BEGIN(UNLOCKED)连接1:SELECT...(SHARED)连接1:INSERT...(RESERVED)连接2:BEGIN(UNLOCKED)连接2:SELECT...(SHARED)连接1:COMMIT(PENDING,尝试获取EXCLUSIVE锁,但还有SHARED锁未释放,返回SQLITE_BUSY)连接2:INSERT...
SQLite是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成。Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用。在使用SQLite前,我们先要搞清楚几个概念:表
设计思想————首先要确定有几个页面、和每个页面的大致布局由于是入门,我也是学习了不是很长的时间,所以项目比较low。。。。第一个页面,也就是打开APP的首页面:今天这个博客,先实现添加功能!:首先对主界面进行布局:其中activity_main.xml的代码为<?xmlversion="1.0"encoding="