劉穎++胡暢霞++米建
摘 要 本文通過對Android連接數據庫的研究,選擇Microsoft Visual Studio 2010,eclipse和SQLServer為技術開發平臺,以移動開發為案例,設計了Android通過WebService與數據庫的連接。
關鍵詞 WebService;Android;SQLServer
中圖分類號TP3 文獻標識碼 A 文章編號 1674-6708(2015)145-0048-01
隨著現代社會中手機用戶的普遍增多,手機應用程序也如雨后春筍般成長起來。一個出色的手機應用程序免不了要與數據庫進行連接,但是Android不能直接連接數據庫,因此本文介紹了通過一個“橋梁”——webservice來訪問SQLServer數據庫。
1 Android連接數據庫的方式
在Android開發中,一般有如下幾種方式連接數
據庫。
1)Android訪問自帶的SQLite數據庫。通過使用數據庫操作幫助類繼承SQLiteOpenHelper。在DAO層借助數據庫操作幫助類寫數據庫操作的方法。Activity調用DAO層的數據庫操作方法進行操作。
2)Android可以通過Http協議獲取數據。將Http協議連接對象,通過Post請求向服務器傳送數據,數據放在HTML HEADER內一起傳送到服務端URL地址。
3)通過SOAP協議獲取數據。客戶生成SOAP請求,嵌入在HTTP POST請求中,發送到服務器上,服務器再把這些請求通過HTTP應答的方式把它送回到客戶端。
2 Android連接數據庫的詳細設計
2.1 項目背景
本人承擔了河北省大學生創新項目《“互聯網+”下畢業設計評價系統》,采用了SQL Server數據庫,第一階段中利用.net技術已經開發了網站,第二階段需要開發配套的手機APP,但是Android如何連接數據庫,SQL server中的數據如何通過手機顯示,成為了本項目開發的關鍵問題。
2.2 解決方案
本人采用了SOAP協議,通過WebService這個橋梁實現了對SQLServer數據庫的訪問。
首先,本人需要設計WebService應用程序連接數據庫。在Web.config文件中設置虛擬目錄,連接數據庫。下面以“在線視頻播放”部分功能進行具體說明。
在本模塊中,需要根據視頻的id,從數據庫中獲取視頻網址,然后在網上進行在線播放。下面是實現步驟。
首先在VS2010中定義WebService:
1)服務名:SelectVideo:在線視頻的函數服
務名。
2)參數:id:在線視頻的id,通過id獲取視頻的網址。
3)返回值:list:返回視頻的網址。
Public List
String sql=”Select F_path from V_Video where F_id= ”+id+” ”。
SqlDataReader reader=db.ReturnDataReader(sql),定義SqlDataReader類型變量,執行SQL語句。
list.Add(reader[0].ToStirng()),用list數組返回視頻網址
之后在eclipse中, 引入ksoap2-android項目的ksoap2-android-assembly-3.0.0-RC.4-jar-with-dependencies.jar包。之后用ksoap2-Android調用Webservice,具體操作過程如下。
(1)創建HttpTransportSE對象,該對象用于調用WebService操作;
final HttpTransportSE ht=new HttpTransportSE(” ”);
(2)創建SoapSerializationEnvelope對象;
final SoapSerializationEnvelopeanvelope =new SoapSerializationEnvelope (SoapEnvelope.VERLL);
(3)創建SoapObject對象,創建該對象時需要傳入所要調用的WebService的命名空間;
static final String SERVICE_NS = “http://tempuri.org/”;
SoapObject soapobject=new SoapObject(SERVICE_NS,methodName)
將參數傳給Web Service服務端,調用Soapobject對象的addproperty方法。
例如:SoapObject.addProperty(“zjid”,zjid),為WebService服務器傳遞參數,zjid就是該視頻的id,通過id,獲取視頻的網址,然后進行視頻的播放。
(4)直接對bodyout屬性賦值,將SoapObject對象設為SoapSerializationEnvelope的傳出SOAP消
息體。
envelope.bodyout=soapobject;
(5)調用對象的call方法,并以SoapSerializationEnvelope作為參數調用遠程WebService。
ht.call(SERVICE_NS+methodName,envelope);
(6)調用完成后,訪問SoapSerializationEnvelope對象的bodyin屬性。
SoapObject result=(SoapObject)envelope.bodyin;
(7)在Activity中用SoapObject定義變量調用
函數。
SoapObject detail=Web.getVideo(id)
String path=detail.getProperty(i).toString();
通過這些操作,我們就可以通過WebService對數據庫進行數據訪問,通過視頻id獲取視頻網址,從而進行視頻的在線播放。
3 結論
作者利用WebServcie這個橋梁,實現Android和SQL Server數據庫的連接,并將該方法應用在了大學生創新項目中,實踐證明,該方法可以高效快速的顯示數據庫中的數據。
參考文獻
[1]袁向英.基于Android系統的數據庫開發和插件技術的應用開發.2014.
[2]王紹祥,邵禹斌,龍華,等.Android手機與數據庫的一種數據交互方法.2011.
[3]黃淑靜,楊紅梅.利用JSON+WebService實現Android訪問遠程數據庫.2013.
[4]王飛,王創偉.基于Android的數據庫初始化方案的研究與應用.2012.