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

基于Windows CE.Net嵌入式系統的數據庫設計與應用

2013-04-12 00:00:00龔小林段建紅
現代電子技術 2013年20期

摘 要: 針對嵌入式平臺下數據庫應用日益廣泛的實際,建立在嵌入式操作系統背景下的簡單、高效、實用的數據庫訪問方法成為必要。在此主要對在Windows CE.Net平臺下如何利用ADOCE技術訪問SQL Server CE 2.0數據庫進行了討論,其中重點闡述了數據庫連接的建立和怎樣通過SQL語句對數據庫進行各式訪問操作,最后給出了運用ADOCE技術訪問SQL Server CE 2.0數據庫的程序運行實例,結果表明這種方法滿足對嵌入式數據庫的訪問需求。

關鍵詞: Windows CE.Net; ADOCE; SQL Server CE 2.0數據庫; 嵌入式操作系統

中圖分類號: TN919?34; TP311.13 文獻標識碼: A 文章編號: 1004?373X(2013)20?0071?03

0 引 言

隨著當代科技日新月異的發展,作為新興產物的嵌入式移動信息設備在人類生活領域的應用越來越廣泛。這些嵌入式設備中的PDA以其體積小、重量輕、便于攜帶、功能強大、功耗低等特點而被受青睞。嵌入式設備的數據庫管理作為PDA的一個重要功能在各行各業的應用也越來越豐富,已成為人們關注的焦點,如:數據字典、車載衛星導航設備、移動設備上的網上追逃等應用歸根結底就是數據庫的應用。嵌入式移動數據庫系統是支持移動計算或某中特定計算模式的數據庫管理系統,數據庫系統與操作系統、具體應用集成在一起,運行在各種智能型嵌入式設備或移動設備上[1]。目前流行的嵌入式數據庫有:Raima提供的Raima Data Manager for CE;Sybase提供的Adaptive Server Anywhere for CE;Oracle提供的Oracle lite for CE;Pocket Access以及Microsoft提供的SQL Server CE。本文將主要介紹在Windows CE.Net操作系統下通過ADOCE技術訪問微軟的SQL Server CE 2.0數據庫的實現與應用實例。

1 Windows CE.Net介紹

Windows CE是Microsoft專門為信息設備、移動應用、消費類電子產品、嵌入式應用等非PC領域而全新設計的戰略性嵌入式操作系統產品。Windows CE的設計目標是:模塊化以及可伸縮性、實時性能好、通信能力強大、支持多種CPU[2]。

Windows CE.Net是Windows CE 3.0的后續產品,它不僅是一個功能強勁的實時嵌入式操作系統,而且提供了眾多強大工具,允許用戶利用它快速開發出下一代的智能化小體積連接設備。借助于完善的操作系統功能和開發工具,Windows CE.Net為開發人員提供了構建、調試和部署基于Windows CE.Net的定制設備所需的一切特性。

Windows CE.Net操作系統可以支持多種數據庫操作,它自身就自帶有一種數據庫CCeDBDatabase,可以通過MFC為Windows CE.Net提供的4個數據庫類對其進行操作。

2 SQL Server CE 2.0介紹

SQL Server CE 2.0的全名是SQL Server 2000 Windows CE Edition version 2.0。SQL Server CE 2.0是運行在Pocket PC以及其他Windows CE平臺上的一個很簡化的SQL Server 2000/7.0,是用作快速開發的關系型精簡數據庫,它將企業數據管理能力擴展到了基于Windows CE操作系統的嵌入式移動設備上。這個數據庫可以和PC機上的SQL Server數據庫同步,而且用它操作數據庫的效率是比較高的。

3 ADO和ADOCE介紹

ADO 是 Microsoft 為所有數據類型提供的戰略性高級接口,它是微軟對OLEDB的封裝。采用 ADO 的應用程序可以通過 OLE數據庫提供程序訪問并處理數據庫服務器中的數據。ADO 的主要優點是:使用簡單、速度高、內存占用少、磁盤占地面積少。

ADO 提供了一致的、高性能的數據訪問方式,可以使用應用程序、工具、語言甚至是 Internet 瀏覽器創建前端數據庫客戶機程序或中層業務對象。

ADOCE 提供了 ADO for Windows CE 操作系統的一個子集,其中包括 Recordset 和 Field 對象的實施過程。ADOCE 能夠啟動對存儲于本地設備中的數據庫的訪問功能,并為網絡數據庫中的數據提供同步功能,從而在 Windows CE 操作系統中增加了新的數據庫功能。

ADOCE 可以由 eMbedded Visual C++ 4.0等任一實現了 COM 的環境中訪問 Windows CE數據庫引擎。

4 訪問SQL Server CE 2.0數據庫的實現與

應用

應用程序不能直接訪問SQL Server CE 2.0數據庫文件,它要操作數據庫文件還必須具備兩大要素:數據庫訪問方式(代理)和數據庫引擎。本文介紹的方法就是應用程序以ADOCE的方式訪問SQL Server CE 2.0數據庫引擎,通過數據庫引擎操作數據庫文件。

在一些情況下(如查詢操作)將產生ADOCE記錄集,供應用程序下一步操作。應用程序訪問SQL Server CE 2.0數據庫流程如圖1所示。

4.1 ADOCE和SQL Server CE 2.0數據庫的注冊

在Windows CE.Net系統下ADOCE和SQL Server CE 2.0數據庫都不能直接使用,需要通過REGSVRCE.EXE將它們的DLL文件進行注冊。共涉及到的DLL文件有7個,其中ADOCE有3個(adoce31.dll,adoxce31.dll,adoceoledb31.dll),SQL Server CE 2.0數據庫有4個(ssce20.dll,msdaeren.dll,ssceca20.dll,ssceerror20en.dll),這些動態連接庫文件都需要預先放置在目標機的Windows目錄下。下面是應用程序(以eMbedded Visual C++ 4.0為例)對adoce31.dll進行的動態注冊:

CreateProcess(_T(\"\\Windows\\RegSvrCe\"),_T(\"/s\\Windows\\adoce31.dll\"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);

其余幾個DLL文件的注冊與此類似,這里不做介紹。

數據庫流程圖

4.2 創建SQL Server CE 2.0數據庫連接實例

創建數據庫連接是訪問數據庫的第一步。在常用的Windows操作系統下SQL Server數據庫的存儲格式與基于Windows CE.Net平臺的存儲格式是不同的。在Windows環境下SQL Server數據庫的存儲格式是mdf,而在Windows CE.Net系統下則是以sdf格式存在的。這在創建數據庫連接時需要特別注意,下面介紹建立數據庫連接的具體步驟。

4.2.1 創建數據庫文件

在建立數據庫連接之前,需要先創建SQL Server CE 2.0數據庫,建立數據庫的方法比較常見的有兩種,一種是通過程序創建,即采用SQL語句中的create database命令,另一種比較簡單的創建數據庫方法,就是運用SQL Server CE中的查詢分析器來可視化創建數據庫,本文采用查詢分析器來建立數據庫BoardStore.sdf。

4.2.2 創建數據庫提供者實例

定義數據庫連接:

IADOCEConnection * m_Conn;

給定數據庫連接參數:

TCHAR tsADOCE30ConnProgID[]= TEXT(\"ADOCE.Connection.3.1\");

IID IID__Connection =

{0x113033DE,0xF682,0x11D2,{0xBB,0x62,0x00,0xC0,0x4F,0x68,0x0A,0xCC}};

//ADOCE連接對象GUID。

初始化COM組件,建立數據庫連接實例:

CoInitializeEx(NULL,COINIT_MULTITHREADED);

hr=CLSIDFromProgID(tsADOCE30ConnProgID,tClsid);//獲取ADOCE的CLSID

hr=CoCreateInstance (tClsid, NULL,

CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,

IID__Connection, (LPVOID *)m_Conn);

將數據庫連接與數據庫文件相關聯:

_tcscpy(pszProvider, _T(\"Provider = Microsoft.SQLSERVER.OLEDB.CE.2.0;Data Source=\\Storage Card\\BoardStore.sdf\"));

hr = m_Conn?>Open(pszProvider,TEXT(\"\"),

TEXT(\"\"),adOpenUnspecified);

其中,Data Source是數據庫文件存放的位置,需使用絕對路徑。這里Open()函數的2、3參數是設置數據庫用戶名和密碼用的,由于數據庫BoardStore.sdf未設置用戶名和密碼,所以參數為空。

4.2.3 創建數據記錄集實例

成功建立數據庫連接后,就可以在數據庫連接的基礎上建立記錄集了,創建記錄集和創建數據庫連接的過程非常相似,僅需要修改一下參數。

創建記錄集實例:

hr=CLSIDFromProgID( tsADOCE30RSProgID, tClsid );

hr = CoCreateInstance (tClsid, NULL,

CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,

IID__Recordset,(LPVOID *)m_Reset);

將記錄集與數據庫連接相關聯:

hr=m_Reset?>put_ActiveConnection(varConn1);

參數varConn1為剛才已經建立的數據庫連接,到目前為止訪問數據庫的準備工作就已經做完了。

4.3 訪問SQL Server CE 2.0數據庫應用實例

建好數據庫連接和記錄集,就可以通過執行SQL語句對數據庫進行訪問操作,數據庫操作主要有建立表、刪除表、查詢記錄、刪除記錄、添加記錄、修改記錄、排序等。下面對應用最為廣泛的查詢記錄、刪除記錄和添加記錄操作做一個詳細的介紹(以某衛星定位系統中的定位數據管理為例)。

4.3.1 查詢記錄

查詢記錄是通過SQL語句將待查詢的記錄首先放進先前建立的記錄集中,然后通過Move、get_Fields、get_Value等函數將數據解析出來。代碼如下:

str.Format(_T(\"select * from pos where ID=%d\"),m_uesrID);

hr=m_Reset?>Open(_variant_t(str),varConn1,

adOpenStatic,adLockReadOnly,adCmdUn);known

其中,參數adOpenStatic表示靜態打開記錄集,參數adLockReadOnly表示打開的記錄集為只讀方式,不能對其修改。如果不設定查詢條件,則將POS表中的全部記錄查詢到記錄集中了。需要繼續查詢,則將前面的查詢結果記錄集關閉。

4.3.2 刪除記錄

刪除記錄的方式有兩種:一種是將要刪除的記錄以動態記錄集方式查詢出來,然后在記錄集中刪除它們,同時將數據庫文件中對應的數據也一并刪除了;另一種就是通過數據庫連接執行SQL命令DELETE將記錄直接從數據庫文件刪除。本定位系統采用了第二種方法,代碼如下:

provider.Format(_T(\"DELETE FROM Pos WHERE Time like ′%s′And Id=%s\"),m_strtime,m_strid);

hr=m_Conn?>Execute(_bstr_t(provider),

NULL,?1,NULL);

如果不設定刪除條件,則將POS表中的所有數據全部刪除。

4.3.3 添加記錄

添加記錄與刪除記錄比較類似,也有兩種方法。這里不在詳細闡述。

很多時候,數據庫都會有一個容量,不能無限制的添加記錄,目前比較流行的數據庫容量管理方法是采用先進先出的原則將最舊的記錄刪除,然后添加新數據。如:

varTSQL.bstrVal=SysAllocString(TEXT(\"pos\");

hr=m_Reset?>Open(varTSQL,varConn1,adOpenDynamic,

adLockOptimistic,adCmdTableDiect);

hr=m_Reset?>MoveFirst();

hr=m_Reset?>Delete();

其中Open()函數的最后三個參數必須設置為adOpenDynamic、adLockOptimistic和adCmdTableDiect,這是因為只有動態打開的記錄集才能執行刪除添加記錄操作。

4.3.4 程序運行實例

圖2給出了運用ADOCE技術訪問SQL Server CE 2.0數據庫的應用實例。

4.4 釋放SQL Server CE 2.0數據庫連接

在程序退出時,往往需要釋放數據庫連接和記錄集,防止產生內存泄露。

m_Conn?>Release();

m_Reset?>Release();

5 結 語

基于Windows CE.Net平臺的數據庫應用程序開發已成為開發PDA應用程序的重要部分。專家診斷系統、信息查詢系統、嵌入式GIS系統、手持聽音訓練系統等都涉及到數據庫的操作。本文研究的基于Windows CE.Net系統下通過ADOCE方式訪問SQL Server CE 2.0數據庫的方法,簡單、高效、實用,現已成功應用于某嵌入式定位系統中的衛星定位數據和通信信息數據的管理中,具有很高的實用價值。

參考文獻

[1] 趙勇,董德存.Windows CE下建立數據庫的幾種方法[J].計算機應用與軟件,2005,22(3):48?50.

[2] 陳向群,王雷,馬洪兵.Windows CE.NET系統分析及實驗教程[M].北京:機械工業出版社,2003.

[3] 倪英俊,王命延.嵌入式SQL語句在VC++數據庫系統開發中的技巧[J].科技廣場,2006(11):30?31.

[4] Microsoft. SQL Server 2000 Windows CE edition 2.0 [M/CD]. [2002?02?20]. http://www. msdn.microsoft.com/en.

[5] Anon. Exploring SQL CE 2.0 schema information with the ATL OLE DB consumer templates [EB/OL]. [2005?04?24]. http://www.codeproject.com.

[6] 熊宇昆,邱智亮.Windows CE.net內核定制[J].電子科技,2006(2):60?62.

主站蜘蛛池模板: 色亚洲成人| 日韩毛片视频| 精品人妻一区二区三区蜜桃AⅤ| 最新国产精品第1页| 欧美日韩国产综合视频在线观看| 女人毛片a级大学毛片免费| 大学生久久香蕉国产线观看| 天堂成人av| 精品国产免费观看| 欧美a级在线| 激情网址在线观看| 国产欧美视频一区二区三区| 特级aaaaaaaaa毛片免费视频| 欧美啪啪网| 日本一区二区三区精品国产| 中国精品久久| 色综合天天视频在线观看| 亚洲精品视频在线观看视频| 久久伊伊香蕉综合精品| a毛片在线播放| 国产手机在线观看| 思思99热精品在线| 国产女人18毛片水真多1| 天堂网国产| 97国产成人无码精品久久久| 本亚洲精品网站| 亚洲无线一二三四区男男| 国产成人精品一区二区三区| 女人一级毛片| 免费A∨中文乱码专区| 女人18一级毛片免费观看| 免费a级毛片18以上观看精品| 免费a在线观看播放| 精品视频一区二区三区在线播| 情侣午夜国产在线一区无码| 精品久久久久久成人AV| 爆乳熟妇一区二区三区| 亚洲精品卡2卡3卡4卡5卡区| V一区无码内射国产| 极品私人尤物在线精品首页| 91精品国产自产在线老师啪l| 免费一级毛片完整版在线看| 免费一看一级毛片| 国产精品一区在线观看你懂的| 国产大片黄在线观看| 国产毛片基地| 久久精品国产精品一区二区| 亚洲AV无码乱码在线观看裸奔 | 99热这里只有成人精品国产| 久无码久无码av无码| 国产真实乱子伦精品视手机观看 | 无码专区国产精品第一页| 伊人久久大香线蕉成人综合网| 久久精品无码一区二区日韩免费| 国产精品无码久久久久AV| 日韩中文无码av超清| 国产尤物视频在线| 一本大道香蕉久中文在线播放| 欧美日韩午夜| 亚洲精品无码抽插日韩| 日韩第一页在线| 亚洲成aⅴ人在线观看| 国产a网站| 亚洲国产欧美自拍| 在线国产毛片| 波多野结衣一区二区三区AV| 国产欧美在线观看精品一区污| 乱人伦99久久| 久久综合亚洲鲁鲁九月天| 四虎永久免费在线| 国产另类视频| 国产呦视频免费视频在线观看| 久久中文字幕av不卡一区二区| 色有码无码视频| 91久久国产综合精品女同我| 中文无码日韩精品| 亚洲成av人无码综合在线观看| 久久香蕉国产线看观| 国产精品极品美女自在线看免费一区二区| 伊人久久久久久久久久| A级全黄试看30分钟小视频| 国产精品极品美女自在线网站|