<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > SQLite在嵌入式系統Wince中的應用

SQLite在嵌入式系統Wince中的應用

作者: 時(shí)間:2011-11-24 來(lái)源:網(wǎng)絡(luò ) 收藏

隨著(zhù)科學(xué)技術(shù)的發(fā)展,嵌入式系統成為了科技發(fā)展的主要領(lǐng)域, Linus和Wince是比較常見(jiàn)的嵌入式系統。嵌入式開(kāi)發(fā)過(guò)程離不開(kāi)數據庫的應用,對于嵌入式數據庫的選擇是必要的。通常,嵌入式系統選擇的數據應該盡量小,SQLite[1]在Linux中的應用很廣泛,本設計介紹了SQLite作為一款小巧的嵌入式數據庫在Wince[2]中的應用實(shí)例。
1 SQLite數據庫的介紹與選擇
1.1 SQLite數據庫結構

SQLite數據庫結構圖如圖1所示。

1.2 SQlite數據庫的特點(diǎn)
SQLite是一個(gè)開(kāi)源的嵌入式關(guān)系數據庫,結構緊湊,可靠性強[3]。有以下特點(diǎn):
(1)使用非常簡(jiǎn)單。只需要掌握3個(gè)核心API函數,大多數的SQL[4]語(yǔ)句都可以使用。
(2)占用很少的存儲器空間。SQLite完全獨立,數據庫引擎和應用程序在同一系統進(jìn)程中,因此運行速度較高。
(3)支持ACID事務(wù),在系統出現問(wèn)題或電源斷電時(shí)不會(huì )出現數據丟失現象。
(4)支持多種語(yǔ)言,像C/C++/C#等。
(5)支持多個(gè)嵌入式操作系統平臺,如Linux系統、Wince系統等。
2 SQlite的選擇
首先,SQL Server CE是Wince自身的數據庫,必須在Wince系統中安裝3個(gè)文件才能使用,而SQLite只需要在電腦上安裝SQlite-1.0.65.0[5],把生成的SQlite.Interop.065.DLL移植到Wince系統運行的程序中,并在Visual Studio2008寫(xiě)程序時(shí)添加一個(gè)引用即可,操作較簡(jiǎn)單。其次SQLite占用很少的存儲器空間(150 KB~250 KB),但是SQL Server CE卻要占用 1 MB~3 MB的空間。最重要的是SQLite具有良好的移植性,可以應用到多個(gè)嵌入式系統,而SQL Server CE只能在Wince中運行。
3 SQLite的應用硬件及軟件平臺
本文探討中以S3C2440作為處理器ARM9的硬件平臺,以Wince6.0為應用系統,支持.NET2.0平臺。在Visual Studio 2008軟件平臺中用 C#中編寫(xiě)程序,但是在新建項目中選擇智能設備時(shí)要選擇.NET2.0平臺。在Visual Studio 2008中用C#編寫(xiě)程序時(shí),第一次使用時(shí)要添加引用System.Data.SQLite,在程序中添加using指令集,這樣可以通過(guò)軟件編寫(xiě)程序實(shí)現建庫建表的功能。


4 SQLite在Wince中的應用實(shí)例
4.1 Wince中顯示數據的控件DataGrid及其屬性

DataGrid控件實(shí)際上是一個(gè)固定的列集合,每一列的行數都是不確定的,可以看作一個(gè)用來(lái)顯示數據的網(wǎng)格。它的網(wǎng)格是看不見(jiàn)的,只有建立了數據表,才能看到其中每一行和每一列的具體內容,如果一個(gè)單元格的文本太長(cháng),就不能在單元格中全部顯示。但是在Wince系統中顯示數據的控件只有這一個(gè),所以不能完全顯示數據這一問(wèn)題正是本設計所要解決的。圖2顯示了DataGrid在Wince中的屬性。

4.2 SQLite建數據庫的步驟
SQLite建數據庫的步驟如下:
(1)通過(guò)SQLiteConnection對數據庫進(jìn)行連接[6],通過(guò)軟件建數據庫,首先要有數據源,如:
SQLiteConnection conn=new SQLiteConnection("Data Source=Program Files maindata.db");
對數據庫要進(jìn)行操作需要執行的命令,如SQLiteCommand cmd=new SQLiteCommand();
(2)每次使用數據庫前需要打開(kāi)數據庫,還需要連接數據庫,關(guān)閉數據庫;
(3)通過(guò) CREATE TABLE SQL語(yǔ)句進(jìn)行建表。必須給表注上表名,方便下面操作。如:
{cmd.CommandText="CREATETABLE ServerLert(Numintrger,BedNum varchar(20),ServerItem varchar(50),ServerTime varchar(30),Passwords varchar(30));"
(4)可以通過(guò)INSERT INTO 語(yǔ)句進(jìn)行插入數據。如:
cmd.CommandText="INSERT INTO ServerLert(Num,BedNum,ServerItem,ServerTime) VALUES(1 ,′2′,′測血糖′,′10-12-10 15:50:00′)";
(5)數據庫至此建成,由于插入的時(shí)間單元格不能完全顯示,因此需要通過(guò)對圖2中標注有灰色背景的TableStyles進(jìn)行設置[7]。如:
DataGridTableStyle dgts=new DataGridTableStyle();
dgts.MappingName=ds.Tables[0].TableName;
DataGridTextBoxColumn dgtbc=new DataGridTextBoxColumn();
dgtbc.HeaderText=ds.Tables[0].Columns[0].ColumnName;
dgtbc.MappingName=ds.Tables[0].Columns[0].ColumnName;
dgtbc.Width=70;
dgts.GridColumnStyles.Add(dgtbc);
上面是對表中第一列進(jìn)行的寬度設置主要是對DataGridTableStyle中列的格式進(jìn)行設置,這就解決了顯示文本過(guò)長(cháng)的問(wèn)題。第二列設置80,第三列設置了170,在Wince中運行的結果。如圖3所示。

4.3 Wince通過(guò)DataGrid屬性建數據庫的分析
DataGrid在應用于基于Wince的Windows mobile[7]智能設備時(shí),主要針對DataGridTableStyle屬性進(jìn)行設置[8]。根據應用于Windows mobile的原理對基于Wince的ARM9的嵌入式設備中建數據庫還是行不通。對其列的屬性進(jìn)行操作設置仍然改變不了列的寬度,所以這種路徑行不通。試了很多種方法,最后通過(guò)軟件編程進(jìn)行設置,得到了圖3的結果。比較DataGridTableStyl進(jìn)行設置與軟件設置發(fā)現,問(wèn)題在于表的MappingName與列的MappingName設置時(shí),必須對應才能實(shí)現修改功能。用DataGridTableStyle設置,如果列的MappingName與數據庫中的建表的列不對應,則映射不存在,從而找不到網(wǎng)格去顯示數據,更無(wú)法對數據的列寬進(jìn)行操作。所以通過(guò)軟件編程,可以對建在緩存區域中的每一張表中所有的列進(jìn)行操作,解決文本過(guò)長(cháng)不能完全顯示的問(wèn)題。
通過(guò)上面的介紹可以看出,SQLite作為開(kāi)源的嵌入式數據庫應用在Wince中的一個(gè)優(yōu)點(diǎn)就是建表比較簡(jiǎn)單,不像SQL CE數據庫[9],在Wince運行中需要先創(chuàng )建表,把所建的數據庫放在Wince的系統中,添加數據源時(shí)再去綁定這個(gè)數據源。對于在.net2.0平臺建立的數據庫[10],添加數據源時(shí)無(wú)法找到路徑,所以這種方法不可行。通過(guò)SQLite軟件創(chuàng )建數據庫的方法則可以改善上述不足。SQLite作為一款小巧的嵌入式數據庫,發(fā)展前景很大,在基于A(yíng)RM的Wince操作系統有著(zhù)廣泛應用[11]。
參考文獻
[1] OWENS M.The definitive guide to SQLite[M].US:APress,2006.
[2] 周毓林,寧陽(yáng),陸貴強,等.Windows CE.net內核定制及應用開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2005.
[3] 萬(wàn)瑪寧,關(guān)永,韓相軍.嵌入式數據庫典型技術(shù)SQLite和Berkeley DB的研究[J].微計算機信息,2006,22(2):91-92.
[4] HENDERSON K.Transact-SQL權威指南[M].健蓮科技譯,北京:中國電力出版社,2002.
[5] An introduction to the SQLite C/C++interface[CP].http:// www.sqlite.org/cintro.html.
[6] 胡偉.SQLite在嵌入式系統上的實(shí)現研究[J].計算機與數字工程,2009,37(2):46-47.
[7] MierosoftWindowsMobile.http://www.mierosoft.eoInjwindowsmobile/default.msPx.
[8] 劉彥博,胡硯,馬駭.WindowsMobile平臺應用與開(kāi)發(fā)[M]. 北京:人民郵電出版社,2006.
[9] NEWMAN C.SQLite[M],USA:Sams,2004.
[10] ROB P.數據庫設計與開(kāi)發(fā)教程[M].于書(shū)舉,許向眾,韓德強,等譯,北京:電子工業(yè)出版社,2002.
[11] 鄧成中,黃惟公,萬(wàn)松峰.基于嵌入式ARMWinCE的小型監控系統的設計[J].微計算機信息,2005,21(23):47-49.

c++相關(guān)文章:c++教程




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>