首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

SQLite嵌入式数据库系统的研究与实现之二

SQLite嵌入式数据库系统的研究与实现之二

3 SQLite在ARM9开发板上的编译及拷贝


  在SQLite官方网www.sqlite.org下载SQLite-3.3.8版本,在终端解压生成SQLite-3.3.8目录。进入此目录,对sqlite/src/sqliteInt.h作一定的修改,以确保btree(B树)有正确的变量大小。不同体系结构的Linux会有些差别。对于ARM-Linux可找到如下部分:



  这样后面的“typedef INTPTR_TYPE ptr;”就定义为“int”类型,而不是“long long”。
  修改configure文件的内容,注释掉相关代码,让系统不去检查交叉编译环境,否则会出现错误,不能生成Makefile文件。然后新建一个文件夹sqlite-arm-linux来保存将要生成的库文件,运行以下命令进行配置:




  将在本目录下生成Makefile文件。修改Makefile文件中如下语句,指定主机编译器为GCC:




  这时就可以运行make & & make install命令开始编译,若无其他错误提示,则会在/../sqlite-3.3.8/sqlite-arm-linux/lib目录下生成库文件。主要有libsqlite3.so、libsqlite3.so.O、libsqlite3.so.O.8.6三个文件。同时在bin文件夹下生成了可执行文件sqlite3。为了减小执行文件大小,用strip命令处理去掉其中的调试信息。

  库文件生成后,可以通过NFS(网络文件系统)把相关库文件拷贝到ARM开发板上,设置好主机NFS服务器,启动目标板后,执行:



  其中192.168.1.101为NFS服务器IP,这样就把sqlite库文件所在文件夹挂载到了目标板上,拷贝时注意加上-arf选项,因为libsqlite3.so和libsqlite3.so.O是链接到Iibsqlite3.so.O.8.6的。

4 嵌入式数据库系统设计及实现


  对嵌入式系统而言,强大的图形用户接口使系统的功能更加丰富。目前有众多的GUI可供使用,考虑到授权和价格的因素,我们在Qt/Embedded基础上进行数据库界面程序的开发,完成嵌入式数据库系统的设计。Qt良好的封装机制使Qt的模块化程度非常高,可重用性较好。嵌入式数据库系统的基本结构如图2所示。




  通过Qt的QTable控件来实现数据表单的显示,通过QListView、QC20mBobox以及QTextEdit等控件进行数据表单的选择、数据输入等,配合PushButton控件实现数据表的创建、删除和数据查询、添加、删除、修改等操作。这样,实现数据库系统的基本管理,并可利用串口实现与后台数据库之间的数据交互。本系统利用Qt Designer实现数据库界面的快速开发,并通过调用SQLite的API接口函数实现数据库的基本操作。下面简要介绍一下用QtDesigner开发数据库界面的基本方法及关键代码。新建一个C++项目,在此基础上新建一个窗口部件,在窗口部件上添加一个Table控件作为数据表单的显示界面。另根据需要,添加PushButton控件以实现相应的操作。在窗口类下新建一个槽,命名为SelectSlot()。连接相关按钮信号,关键代码如下:

  其中tableView函数的作用是将查询得到的数据表显示在Table控件中。函数体程序如下:

  终端下进入工程目录,修改*.pro文件,并添加如下内容:



  这里加入了编译程序所需库文件的路径以及sqlite.h头文件的路径。这一切做好后,开始编译。
  tmake-o Makefile EDBMS.pro生成Makefile,将其中的编译工具改为arm-linux-g++,加上交叉编译的相关库文件。然后make编译,生成能在ARM开发板上运行的二进制文件,并且通过NFS挂载到开发板上。运行./EDBMS,会出现我们设计的窗口界面。查询一个数据表的内容并显示在QTable控件上,主界面效果如图3所示。

  另外,系统运用SQL Servqr。2000作为后台数据库,用VB 6.O开发,通过ODBC与数据库连接,实现后台数据库管理,并负责接收和处理客户端请求。PC机与嵌入设备端则可以通过串口进行通信,以完善系统功能。这样,一个较为完备的嵌入式数据库系统就构建起来了。

结 语


  本文在对嵌入式数据库特性研究的基础上,设计出一种嵌入式数据库系统的体系结构。结合嵌入式数据库的特点,运用SQLite在ARM-Linux平台上构建嵌入式数据库系统。在此基础上利用Qt设计了数据库界面,使用SQLite的API实现数据库的基本操作。最后对后台数据库的配置及串口通信机制做了简要介绍,完成了整个嵌入式数据库系统的构建。
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表