999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SQLite數據庫在嵌入式系統中的應用研究

2015-09-21 09:03:06梁永恩萬世明翟敏換廣東白云學院電氣與信息工程學院廣州510450
現代計算機 2015年10期
關鍵詞:數據處理嵌入式數據庫

梁永恩,萬世明,翟敏換(廣東白云學院電氣與信息工程學院,廣州 510450)

SQLite數據庫在嵌入式系統中的應用研究

梁永恩,萬世明,翟敏換
(廣東白云學院電氣與信息工程學院,廣州 510450)

0 引言

隨著用戶對數據處理和管理需求的不斷提高,越來越多的用戶希望能對嵌入式產品中的數據進行更有效的管理。在嵌入式系統中大多采用文件或數據庫的方式對數據處理。傳統的小型嵌入式系統主要采用文件方式進行數據處理,它主要存在以下缺點[1]:數據共享性差;可移植行差,不同系統之間難以重用;數據管理能力差,查詢和統計不便。而數據庫彌補了文件的缺點,它具有以下優點:數據結構化;數據的共享性高,冗余度低,易擴充;數據獨立性高;具有安全性保護、完整性檢查、并發訪問控制、故障恢復等數據控制功能。嵌入式數據庫系統種類繁多,常用的嵌入式數據有:Advantage Database Server,Berkeley DB,Empress Embedded Database,eXtremeDB,InfinityDB,solidDB,SQL-ite,SQL Server Compact[2]。SQLite[3~4]數據庫以開源、跨平臺、體積小、安全性好、功能強大等優點在嵌入式系統領域獲得了廣泛的應用。

1 SQLite簡介及其移植

1.1SQlite簡介

SQLite是一個輕量級的關系數據庫管理系統,它包含一個C編程庫,提供了簡單易用的API訪問數據庫。采用模塊化設計,主要包含四個模塊:核心(Core)、SQL編譯器(SQL Compiler)、后端(Backend)和附件(Accessories),其體系結構如圖1所示。其中,接口(Interface)以SQLite3作為前綴,提供對數據庫訪問操作的API;分詞器(Tokenizer)的作用是把原始的字符串分割成標記,然后一個一個的傳給語法分析器;語法分析器(Parser)通過分詞器產生的標記分析語句的結構,并且得到一棵語法樹;代碼生成器(Code Generator)遍歷語法分析器生成的語法樹,產生執行SQL語句需要的虛擬機代碼;虛擬機(Virtual Machine)用于執行代碼生成器生成的代碼,它是數據庫中數據的最終操作者;B-tree模塊負責對數據的查找和排序;頁面緩存(pager)的任務是是讀、寫、緩存塊;操作系統接口(OS Interface)為SQLite與不同操作系統之間的操作提供了一個統一接口的抽象層。

1.2SQLite在嵌入式linux中的移植

(1)建立SQLite環境:

①從http://www.sqlite.org下載SQLite源碼包,此處下載的是sqlite-3.7.0.tar.gz。

②將下載的文件解壓,將sqlite-3.7.0.tar.gz解壓到/ home目錄下,然后在/home目錄下新建一個sqlite3-arm。

③設置交叉編譯環境并在解壓生成的sqlite-3.7.0目錄下執行configure配置命令生成Makefile,注意修改配置項交叉編譯器host及存放編譯生成文件目錄prefix,這里設置host為arm-linux,prefix為sqlite3-arm。

④編譯并安裝SQLite。

圖1 SQLite體系結構

(2)移植SQLite數據庫:

①移植可執行文件SQLite3,先用strip處理去掉其中的調試信息,為了減小執行文件大小,再把SQLite3下載到開發板的/usr/bin目錄中

②移植庫文件,去掉libsqlite3.so.0.8.6文件的調試信息后將其拷貝到開發板目錄/usr/lib下,把libsqlite3.so 及libsqlite3.so.0鏈接到libsqlite3.so.0.8.6。

2 應用

2.1SQLite常用API

除可在SQLite環境下執行數據庫操作外,SQLite提供了C語言的API,常用的API如下:

(1)打開SQLite數據庫

int sqlite3_open(char*path,sqlite3**db);

說明:第1個參數為數據庫文件路徑,第2個參數為指向SQLite句柄的指針。執行成功返回0,失敗返回錯誤碼。

(2)關閉sqlite數據庫

int sqlite3_close(sqlite3*db);

說明:執行成功返回0,失敗返回錯誤碼。

(3)執行SQL語句

int sqlite3_exec(sqlite3*,const char*sql,int(*callback)(void*,int,char**,char**),void*,char**errmsg);

說明:第1個參數為已打開的數據句柄的指針,第2個參數為一條SQL語句,第3個參數為回調函數(可填NULL),第4個參數為回調函數的第1個參數(可填NULL),第5個參數為錯誤信息。

2.2SQLite在點餐終端系統中的應用

在筆者實現的點餐終端系統中,選用SQLite數據庫作為點餐數據的存儲數據庫,該數據庫包含多張表,包括菜單信息(菜品ID、菜品名、單價、簡介)、訂單信息(訂單ID、臺號、菜品ID、數量等)、評價信息(訂單ID、菜品ID、評價等級等)。界面顯示使用Qt,通過調用SQLite3的接口函數實現數據庫的訪問操作,以下為部分代碼:

(1)數據庫操作相關變量

sqlite3*db;//數據庫

char*errmsg=NULL;//錯誤信息

int ret;

int rownum;//列數

int columnnum;//行數

char**pazResult; //數據查詢結果

(2)打開ordering數據庫

ret=sqlite3_open("ordering.db",&db);if(ret!=SQLITE_OK)

{qDebug()<<"sqlite3 open error";}

(3)新建menu菜單信息表

//創建表,表中包含4個字段:菜品ID、菜品名、單價、簡介

ret=sqlite3_exec(db,"create table menu(menuid varchar (10)PRIMARY KEY,name varchar(20),price float,summary varchar(80))",NULL,NULL,&errmsg);

if(ret!=SQLITE_OK)

{qDebug()<<"create table error";}

(4)插入數據到menu表

ret=sqlite3_exec(db,"insert into menu values('001','精選肥牛',35,'肉質細嫩,營養豐富')",NULL,NULL,&zErr Msg)

(5)界面顯示

//可用QTableWidget控件顯示表數據

QString name;//菜品名稱

QString price;//單價

QString count;//菜品數量

int i,j,index;

QTableWidget*mytable=new QTableWidget(this);

//創建一個QTableWidget控件

mytable->setColumnCount(3);//設置列數為3

QStringListheadstrList;

headstrList<<"名稱"<<"單價(元)"<<"數量";

mytable->setHorizontalHeaderLabels(headstrList);

//設置表頭

ret=sqlite3_get_table(db,“select*from order”,&paz Result,&rownum,&columnnum,&errmsg);

if(ret==SQLITE_OK)

{index=columnnum;//第一行數據是字段名稱,從columnnum索引開始才是真正的數據

for(i=0;i<rownum;i++)

{//讀取訂單信息表中的數據,逐行置于name、price、count變量中,然后將數據插入表格控件中

name=QString(pazResult[index++]);

mytable->setItem(i,0,new QTableWidgetItem(name);

price=QString(pazResult[index++]);

mytable->setItem(i,1,newQTableWidgetItem(price);count=QString(pazResult[index++]);

mytable->setItem(i,2,new QTableWidgetItem(count);

界面顯示效果如圖2所示。

圖2 界面顯示效果

3 結語

本文介紹了SQLite數據庫的特點和體系結構,給出了SQLite在嵌入式Linux中的移植過程,并結合點餐終端系統實例講解SQLite的應用方法。實踐表明,在嵌入式系統中應用SQLite,系統運行穩定,數據庫響應迅速,可有效滿足嵌入式系統領域對數據管理的需求。

[1]謝輝.嵌入式數據庫的設計與實現[D].太原:太原科技大學,2008

[2]蔡勇,王勇.嵌入式數據庫SQLite在測控系統設計中的應用[J].電子測試,2011(10):89~93

[3]唐敏,宋杰.嵌入式數據庫SQLite的原理與應用[J].電腦知識與技術,2008(02):51~54

[4]解輝,徐玉斌,李建偉,等.基于SQLite的嵌入式數據采集系統的研究[J].計算機與數字工程,2008(6):91~94

SQLite;Embedded System;Database

Research on the Application of SQLite Database in Embedded System

LIANG Yong-en,WAN Shi-ming,ZHAI Ming-huan
(School of Electrical and Information Engineering,Guangdong Baiyun University,Guangzhou 510450)

1007-1423(2015)10-0060-03

10.3969/j.issn.1007-1423.2015.10.017

梁永恩(1978-),男,廣東廣州人,碩士研究生,講師,研究方向為嵌入式系統

萬世明(1955-),男,湖北武漢人,碩士研究生,教授,研究方向為系統工程

翟敏煥(1983-),女,廣東佛山人,碩士研究生,講師,研究方向為自動控制

2015-01-29

2015-03-12

分析SQLite數據庫的特點及結構,給出SQLite數據庫在嵌入式Linux系統的移植過程,并結合具體事例介紹SQLite的應用。實踐表明,在嵌入式系統應用SQLite數據庫,可有效提高嵌入式系統處理數據處理能力,簡化數據處理過程和提高數據管理的效率。

SQLite;嵌入式系統;數據庫

廣東白云學院2013年度科研項目(No.BYKY201319)

Analyzes the characteristics and the structure of the SQLite,gives the migration process of embedded Linux system with SQLite,and gives an example of the application of SQLite.Practice shows that the ability of embedded system can be effectively improved to deal with the data processing,simplify data processing and improve the efficiency of data management by using SQLite.

猜你喜歡
數據處理嵌入式數據庫
認知診斷缺失數據處理方法的比較:零替換、多重插補與極大似然估計法*
心理學報(2022年4期)2022-04-12 07:38:02
ILWT-EEMD數據處理的ELM滾動軸承故障診斷
水泵技術(2021年3期)2021-08-14 02:09:20
搭建基于Qt的嵌入式開發平臺
數據庫
財經(2017年2期)2017-03-10 14:35:35
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
基于希爾伯特- 黃變換的去噪法在外測數據處理中的應用
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 中文字幕首页系列人妻| 热久久这里是精品6免费观看| 米奇精品一区二区三区| 午夜欧美在线| 久久国产精品77777| 日韩 欧美 小说 综合网 另类| 无码专区第一页| 无码网站免费观看| 国产美女一级毛片| 亚洲国产欧美国产综合久久 | 亚洲成a人在线观看| 91国内在线观看| 在线免费看黄的网站| 97国产在线播放| 宅男噜噜噜66国产在线观看| 欧美精品黑人粗大| 有专无码视频| 91青青草视频在线观看的| 高h视频在线| 国产青榴视频在线观看网站| 国产激情在线视频| 在线免费不卡视频| 久久永久视频| 亚洲美女操| 欧美一区二区自偷自拍视频| 一级片一区| 欧美日韩中文字幕在线| 亚洲无码精品在线播放| 欧美亚洲欧美| 人妻夜夜爽天天爽| 国产激爽爽爽大片在线观看| 沈阳少妇高潮在线| 97se亚洲综合在线| 久久香蕉国产线看精品| 国产精品久久精品| 精品视频一区二区观看| 国产日韩av在线播放| 色精品视频| 国产一区免费在线观看| 丁香婷婷综合激情| 最新无码专区超级碰碰碰| 国产日韩欧美一区二区三区在线| 97国产精品视频自在拍| 国产成人久视频免费| 亚洲一区二区黄色| 久久久久亚洲AV成人网站软件| 四虎成人在线视频| 2022国产91精品久久久久久| 亚洲中文字幕无码mv| 国产又粗又爽视频| 久久香蕉欧美精品| 日韩在线播放欧美字幕| 国产成人精品亚洲日本对白优播| 啦啦啦网站在线观看a毛片 | 麻豆精品在线播放| 91成人在线观看| 伊人五月丁香综合AⅤ| 久久夜夜视频| 成人a免费α片在线视频网站| 亚洲aaa视频| 中文字幕无线码一区| 黄色成年视频| 在线网站18禁| 久久国产精品国产自线拍| 国产精品无码一二三视频| 免费一级毛片在线观看| 亚洲码一区二区三区| 欧美亚洲欧美区| 中文无码日韩精品| 欧美在线网| 日本尹人综合香蕉在线观看| 成人无码区免费视频网站蜜臀| 一区二区三区四区精品视频 | 国产va视频| 欧美爱爱网| 国产第八页| 国内嫩模私拍精品视频| 国产香蕉在线视频| 国产一区二区色淫影院| 亚洲香蕉伊综合在人在线| 91精品专区| 456亚洲人成高清在线|