張志東 王玉清
摘 要:本文通過設(shè)計(jì)Android版的教務(wù)系統(tǒng)客戶端,詳細(xì)描述了通過創(chuàng)建Web Service平臺(tái)連接oracle數(shù)據(jù)庫的方法,android客戶端通過ksoap2-android類訪問Web Service平臺(tái)的方法,最后實(shí)現(xiàn)Android客戶端訪問oracle數(shù)據(jù)庫。并介紹了其中關(guān)鍵技術(shù),最后給出了開發(fā)android系統(tǒng)時(shí)操作大型數(shù)據(jù)庫的方法。
關(guān)鍵詞:android;web service;oracle數(shù)據(jù)庫
中圖分類號:TP311 文獻(xiàn)標(biāo)識(shí)碼:A
1 引言(Introduction)
現(xiàn)在大多數(shù)高校都有了自己的教務(wù)管理系統(tǒng),學(xué)生、教師需通過網(wǎng)絡(luò)查看自己的課表、成績、選報(bào)課程等。電腦與網(wǎng)絡(luò)逐漸成了廣大師生學(xué)習(xí)與工作中必不可少的工具。但是電腦的學(xué)生的普及率并不高,而且攜帶不方便。由于系統(tǒng)是針對電腦開發(fā)的,許多系統(tǒng)功能是通過手機(jī)無法實(shí)現(xiàn)的,并且流量費(fèi)用也制約手機(jī)用戶。因此開發(fā)手機(jī)版的管理系統(tǒng)勢在必行。
目前手機(jī)用戶大多數(shù)采用Android系統(tǒng),它采用關(guān)系型數(shù)據(jù)庫是SQLite,一個(gè)支持SQL的輕量級嵌入式數(shù)據(jù)庫[1]。Android系統(tǒng)不能夠直接訪問其他大型數(shù)據(jù)庫,如oracle、sql、db2等。大多數(shù)Android系統(tǒng)開發(fā)時(shí)又必須創(chuàng)建獨(dú)立的大型數(shù)據(jù)庫,這就需要?jiǎng)?chuàng)建Web Service平臺(tái),該平臺(tái)能夠操作數(shù)據(jù)庫,而且還能提供相應(yīng)的接口。然后Android系統(tǒng)開發(fā)時(shí)通過ksoap2-android類訪問Web Service平臺(tái)[2]。這樣就可以實(shí)現(xiàn)Android程序操作大型數(shù)據(jù)庫的目的。
2 Android系統(tǒng)(Android system)
Android系統(tǒng)基于Linux的自由及開放源代碼,主要使用于智能手機(jī)和平板電腦,目前逐漸擴(kuò)展到其他領(lǐng)域,如電視、游戲機(jī)、數(shù)碼相機(jī)等[3]。Android系統(tǒng)采用了分層的架構(gòu),從高到低分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行庫層和內(nèi)核層。采用分層模式的好處就是使用下層提供的服務(wù)和為上一層提供統(tǒng)一的服務(wù),當(dāng)下層發(fā)生變化時(shí)對上層是沒有影響的。其特點(diǎn)就是高內(nèi)聚、低耦合[4]。
3 Web Service技術(shù)(Web service technology)
Web Service即Web服務(wù),它是一個(gè)跨平臺(tái)、低耦合的Web應(yīng)用程序,它能夠使不用系統(tǒng)、不同機(jī)器上的應(yīng)用程序無須借助第三方軟件和硬件,就可以實(shí)現(xiàn)數(shù)據(jù)的相互交換。它采用soap協(xié)議(簡單對象訪問協(xié)議),數(shù)據(jù)傳輸格式是XML語言[5]。
目前現(xiàn)在許多應(yīng)用程序都采用Oracle、SQL等數(shù)據(jù)庫,根據(jù)業(yè)務(wù)需求要開發(fā)Android版的應(yīng)用程序。但是Android平臺(tái)是無法直接訪問這些大型數(shù)據(jù)庫的。因此Android程序需要借助Web Service平臺(tái)來訪問這些數(shù)據(jù)庫。
如圖1所示為Android客戶端借助Web Service接口實(shí)現(xiàn)對oracle數(shù)據(jù)庫的操作。
圖1 Android客戶端操作oracle數(shù)據(jù)庫
Fig.1 Operate the oracle database
base at the android client
4 基于.NET平臺(tái)設(shè)計(jì)Web Service訪問接口(Design
web service access inte rface based on the .NET
platform)
.NET即Microsoft XML Web Services平臺(tái),是微軟公司最新推出的技術(shù)平臺(tái)。它允許應(yīng)用程序通過Internet相互訪問和數(shù)據(jù)共享,不需要考慮用戶采用何種操作系統(tǒng)、設(shè)備等[6]。
本系統(tǒng)使用C#語言創(chuàng)建一個(gè)Web Service接口。其功能是根據(jù)用戶輸入的學(xué)號,查詢學(xué)生的成績、當(dāng)前學(xué)期的課程安排以及最新公告通知等。具體函數(shù)及功能如表1所示。
表1 接口名稱及其功能
Tab.1 The name and function of the interface
接口名稱 接口功能
chaxuncj(string xh) 根據(jù)學(xué)號查詢該生的所有成績
insertxkxxb(string kch,string kxh,string xh) 根據(jù)學(xué)號、課程號、課序號實(shí)現(xiàn)重修課程、任選課程的報(bào)名
chaxunkb(string xh) 根據(jù)學(xué)號查詢本學(xué)期個(gè)人的課表
Tongzhi() 查看管理員發(fā)送的新聞或通知
查詢學(xué)生成績和重修選課接口的部分代碼如下:
public Listchaxuncj(string xh)
{List
list.Add(sd [4].ToString());//課程成績
list.Add(sd [5].ToString());//課程類型
}
reader.Close();
cmd.Dispose();
return list;
}
學(xué)生需要通過系統(tǒng)報(bào)任選課,將不及格的課程號、課序號填入,學(xué)生的個(gè)人信息才可以加入到成績庫中。關(guān)鍵代碼如下:
public bool insertxkxxb(string kch,string kxh,string xh)
{
string sql="insert into xkxxb(kch,kxh,xh) values('"+,kch+,"',"+kxh+",”+xh+”) where xueqi="+dqxq;
SqlCommand cmd=new SqlCommand(sql,sqlCon);
cmd.ExecuteNonQuery();
cmd.Dispose();
return true;
}
4.1 設(shè)計(jì)Android 客戶端訪問Web Service接口
Android 客戶端主要功能是學(xué)生通過使用手機(jī)端輸入學(xué)號和密碼登錄系統(tǒng),學(xué)生能夠接收到最新的校園新聞和通知,可以查看本學(xué)期的個(gè)人課表,輸入不及格課程的課程號和課序號可以實(shí)現(xiàn)重修報(bào)名,查看所有成績信息(包含重修通過的課程)。具體內(nèi)容如圖2所示。
圖2 Android 客戶端功能模塊圖
Fig.2 Function block diagram of the android client
4.2 Android 客戶端向Web Service接口發(fā)送數(shù)據(jù)并接受
信息
學(xué)生在Android客戶端輸入學(xué)號和密碼,然后客戶端將數(shù)據(jù)傳輸?shù)絎eb Service接口,Web Service接口根據(jù)接收的數(shù)據(jù)和函數(shù)類型對數(shù)據(jù)庫進(jìn)行操作,最后將操作結(jié)果反饋到Android 客戶端。
首先在Android客戶端創(chuàng)建線性布局文件res/layout/main.xml,在布局文件中創(chuàng)建兩個(gè)文本輸入框,分別用于輸入學(xué)號和密碼,一個(gè)Button提交按鈕。然后創(chuàng)建MainActivity,編寫getxsinfo函數(shù)實(shí)現(xiàn)Android客戶端向Web Service接口傳輸數(shù)據(jù),并接收到的學(xué)生信息顯示到文本框內(nèi)。關(guān)鍵代碼如下:
public void getxsInfo(String xh) {
String name="http://211.82.48.36:8080/";
String method="getxsInfo";
String end="http://211.82.48.36:8080/ MobileCodeWS.asmx";
String search="http://211.82.48.36:8080/selectcj";
SoapObject rpc=new SoapObject(name,method);
rpc.addProperty("xh","");
SoapSerializationEnvelope soapenvelope=new SoapSerializationEnvelope(SoapEnvelope.VER10);
soapenvelope.bodyOut=rpc;
soapenvelope.dotNet=true;
soapenvelope.setOutputSoapObject(rpc);
HttpTransportSE transport=new HttpTransportSE(end);
transport.call(soapAction,esoapnvelope);
SoapObject object=(SoapObject) envelope.bodyIn;
String xinxi=object.getProperty(0).toString();
resultView.setText(xinxi);
}
5 結(jié)論(Conclusion)
本文著重介紹了在設(shè)計(jì)Android客戶端程序時(shí)如何操作大型數(shù)據(jù)庫,結(jié)合教務(wù)系統(tǒng)Android客戶端的設(shè)計(jì),詳細(xì)介紹了使用C#語言設(shè)計(jì)Web Service接口并操作oracle數(shù)據(jù)庫,將數(shù)據(jù)結(jié)果以XML格式輸出,Android客戶端調(diào)用Web Service接口,將接收到的數(shù)據(jù)顯示到文本框內(nèi),或者將數(shù)據(jù)傳輸?shù)絎eb Service接口,由Web Service接口來操作數(shù)據(jù)庫。最終通過設(shè)計(jì)Web Service接口實(shí)現(xiàn)數(shù)據(jù)庫跨平臺(tái)的操作。
參考文獻(xiàn)(References)
[1] 王冬霞.基于Android天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].科技廣 場,2014,(1):57-61.
[2] 陳愛華.基于XML和Web Service的異構(gòu)數(shù)據(jù)庫數(shù)據(jù)交換研究 [J].軟件工程師,2011(5):56-58.
[3] 周樹明.基于Web Service技術(shù)的應(yīng)用實(shí)例的設(shè)計(jì)和實(shí)現(xiàn)[J].計(jì) 算機(jī)應(yīng)用于軟件,2003(4):63-65.
[4] 郭定聰.基于Web服務(wù)器的Android手機(jī)管理系統(tǒng)的設(shè)計(jì)與實(shí) 現(xiàn)[D].哈爾濱工業(yè)大學(xué),2013.
[5] 柏永斌.基于XML和Web Service的異構(gòu)數(shù)據(jù)整合技術(shù)應(yīng)用研 究[J].電腦知識(shí)與技術(shù),2009,(08):1796-1797.
[6] 岳俊梅.基于網(wǎng)絡(luò)環(huán)境的自主學(xué)習(xí)現(xiàn)狀及分析[J].軟件工程師, 2014,17(7):34-36.
作者簡介:
張志東(1979-),男,碩士,講師.研究領(lǐng)域:計(jì)算機(jī)應(yīng)用.
王玉清(1965-),男,學(xué)士,教授.研究領(lǐng)域:應(yīng)用數(shù)學(xué).