周輝 v趙峰 馬亮
摘要:介紹Windows UWP和SQLite的特點(diǎn)和體系結(jié)構(gòu)。在Windows 10上搭建UWP App開(kāi)發(fā)環(huán)境,闡述SQLite在UWP平臺(tái)上的應(yīng)用方法,利用SQLite for Universal Windows Platform和SQLite.Net實(shí)現(xiàn)SQLite數(shù)據(jù)庫(kù)的增加、刪除、查詢等操作。
關(guān)鍵詞關(guān)鍵詞:Windows 10;UWP;SQLite
DOIDOI:10.11907/rjdk.161207
中圖分類號(hào):TP319文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào)文章編號(hào):16727800(2016)007013102
0引言
2015年7月29日,美國(guó)微軟公司正式發(fā)布了Windows 10操作系統(tǒng),該系統(tǒng)是新一代跨平臺(tái)及設(shè)備應(yīng)用的操作系統(tǒng)。其設(shè)計(jì)目標(biāo)是統(tǒng)一整個(gè)Windows產(chǎn)品系列的操作系統(tǒng),包括個(gè)人電腦、平板電腦、智能手機(jī)上的嵌入式系統(tǒng)、Xbox One及Surface和Microsoft HoloLens等。在Windows平臺(tái)下開(kāi)發(fā)小型數(shù)據(jù)庫(kù)應(yīng)用或其它軟件時(shí),一般會(huì)采用MS Access、MYSQL等數(shù)據(jù)庫(kù)。實(shí)際上應(yīng)用軟件只使用了數(shù)據(jù)庫(kù)產(chǎn)品很少的特性,絕大多數(shù)功能沒(méi)有被利用,浪費(fèi)了很多系統(tǒng)資源;通常這些數(shù)據(jù)庫(kù)都要比應(yīng)用軟件本身大很多,使得軟件系統(tǒng)變得體積龐大;同時(shí),當(dāng)軟件發(fā)布部署時(shí)還要考慮各種支持文件的版本,配置也較為繁瑣。
而嵌入式數(shù)據(jù)庫(kù)SQLite可解決此類問(wèn)題。SQLite是D.Richard Hipp創(chuàng)建的開(kāi)源項(xiàng)目。SQLite是遵守ACID的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。與許多其它數(shù)據(jù)庫(kù)管理系統(tǒng)不同,SQLite不是一個(gè)客戶端/服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫(kù)引擎,而是被集成在用戶程序中。SQLite具備系統(tǒng)開(kāi)銷小、效率高,跨平臺(tái)、開(kāi)源、易移植和擁有處理事務(wù)能力等優(yōu)勢(shì)[1,2]。這些優(yōu)點(diǎn)使得用戶越來(lái)越多,Google在它開(kāi)發(fā)的Google Gears、Android甚至Chrome中都用到了SQLite [3,4]。
1通用Windows平臺(tái)(UWP)
通用Windows平臺(tái)Universal Windows Platform(UWP)是由微軟創(chuàng)建并首次隨Windows 10推出的統(tǒng)一平臺(tái)應(yīng)用架構(gòu)。Windows 10將為所有硬件提供一個(gè)統(tǒng)一的平臺(tái),支持從物聯(lián)網(wǎng)設(shè)備到全球企業(yè)數(shù)據(jù)中心服務(wù)器等廣泛的設(shè)備類型(見(jiàn)圖1)。UWP幫助用戶開(kāi)發(fā)應(yīng)用程序時(shí),無(wú)需重新編寫(xiě)代碼就可以讓這些應(yīng)用程序能在Windows10的各個(gè)版本上運(yùn)行。UWP API是用C++實(shí)現(xiàn)的,但支持C++,VB.NET,C#和JavaScript調(diào)用。UWP最早由Windows Server 2012和Windows 8的Windows Runtime發(fā)展演進(jìn)來(lái)的[5]。
UWP 應(yīng)用(UWP App)是基于UWP平臺(tái)生成的Windows應(yīng)用程序。依賴于UWP的強(qiáng)大功能,UWP App可實(shí)現(xiàn)同樣的代碼運(yùn)行在不同的設(shè)備上?;赪indows 10和Visual Studio 2015,用戶可輕松開(kāi)發(fā)UWP App。UWP 應(yīng)用具有以下特點(diǎn)[6,7]:
(1)所有 Windows 設(shè)備系列均使用相同的通用UWP核心API。如果應(yīng)用僅使用核心 API,它將可在任何Windows 10設(shè)備–PC、平板電腦、手機(jī)上運(yùn)行。
(2)自適應(yīng)控件和輸入。用戶界面UI元素使用有效像素,因此它們會(huì)基于設(shè)備上可用的屏幕像素?cái)?shù)自動(dòng)自行調(diào)整,并且能正確處理多種輸入類型(如鍵盤(pán)、鼠標(biāo)、觸摸、筆和Xbox One控制器)。
2SQLite在UWP App開(kāi)發(fā)中的應(yīng)用
本文開(kāi)發(fā)的UWP App主要功能是:創(chuàng)建SQLite數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)表進(jìn)行初始化,對(duì)數(shù)據(jù)表進(jìn)行添加、刪除、修改、查詢等操作。本文使用的開(kāi)發(fā)環(huán)境如下:操作系統(tǒng):Windows 10專業(yè)版;開(kāi)發(fā)平臺(tái):Microsoft Visual Studio 2015。
2.1開(kāi)發(fā)環(huán)境配置
(1)SQLite for Universal Windows Platform擴(kuò)展。SQLite for Universal Windows Platform擴(kuò)展是由SQLite官方開(kāi)發(fā)的針對(duì)UWP平臺(tái)無(wú)服務(wù)器、零配置、支持事務(wù)處理的數(shù)據(jù)庫(kù)引擎。該擴(kuò)展可從SQLite官網(wǎng)下載,然后根據(jù)提示自動(dòng)安裝;或者使用Visual Studio菜單欄中工具/擴(kuò)展與更新工具來(lái)查詢和安裝。安裝完成后,還需要在工程中添加對(duì)SQLite for Universal Windows Platform的引用。
(2)添加 SQLite.Net引用。在Visual Studio中使用管理NuGet程序包管理工具安裝SQLite.Net-PCL。SQLite.Net是一個(gè)開(kāi)源的、允許.NET和Mono應(yīng)用程序訪問(wèn)SQLite數(shù)據(jù)庫(kù)的對(duì)象關(guān)系映射(Object Relational Mapping,簡(jiǎn)稱ORM)框架。ORM是一種程序設(shè)計(jì)技術(shù),用于實(shí)現(xiàn)面向?qū)ο缶幊陶Z(yǔ)言中不同類型系統(tǒng)的數(shù)據(jù)之間的轉(zhuǎn)換。正因?yàn)橛辛薙QLite.NET這樣強(qiáng)大的ORM框架,用戶無(wú)需編寫(xiě)復(fù)雜的代碼就可以輕松操作SQLite數(shù)據(jù)庫(kù)表。
2.2數(shù)據(jù)庫(kù)操作實(shí)現(xiàn)
(1)創(chuàng)建數(shù)據(jù)庫(kù)、表。本文在UWP平臺(tái)上利用SQLite開(kāi)發(fā)跨斷層測(cè)距場(chǎng)地管理軟件,其中有關(guān)場(chǎng)地?cái)?shù)據(jù)的表結(jié)構(gòu)如表1所示。
2.3應(yīng)用實(shí)例
該程序?qū)崿F(xiàn)了對(duì)跨斷層場(chǎng)地?cái)?shù)據(jù)的簡(jiǎn)單管理,在Win10桌面系統(tǒng)中運(yùn)行的效果如圖2所示。同時(shí),程序在UWP模擬器環(huán)境中能夠正常運(yùn)行,并且擁有與Win10桌面系統(tǒng)相同的用戶體驗(yàn)。
3結(jié)語(yǔ)
在UWP App程序開(kāi)發(fā)中,由于SQLite零配置等特性,使得SQLite十分適合UWP App能在多個(gè)平臺(tái)上運(yùn)行的特點(diǎn)。無(wú)需數(shù)據(jù)庫(kù)環(huán)境配置,直接運(yùn)行應(yīng)用程序就可