android如何訪問MySQL,通過網路伺服器中轉的話應該如何實現,有實例最好,謝謝了 就是想客戶端向服務端發送請求,服務端對資料庫中數據處理後反饋給客戶端這樣該如何實現


android如何訪問MySQL?為什麼要直接訪問資料庫?你是在做CS架構的軟體?建議做成webservice介面調用,直接暴露資料庫在網路上,已經是老掉牙的做法了。也很不安全。


收到私信求助,嘗試回答這個問題,希望能對第一次接觸web service的同學有所幫助吧。將以前的回答及問題刪除

----------------------------------分割線--------------------------------

當然,首先想到的是直接訪問資料庫的方式,但是這也就意味著資料庫的賬戶密碼就直接放到客戶端中,不僅是安全性不能保證,而且意味著應用的所有業務邏輯判斷必須放到手機端,當系統需要多終端支持時,就必須在其他的終端中重寫所有的業務邏輯。

前輩們早就為我們提出了另一種解決方案:使用中間人進行數據訪問,而且中間人不僅擔任數據訪問的角色,還能夠對業務邏輯進行處理,這樣,只要系統結構足夠合理,手機終端需要做的就僅僅是數據顯示的任務了。這個中間人就是今天要說的 Web Service,貼一句維基百科對Web Service的定義:

Web服務是一種服務導向架構的技術,通過標準的Web協議提供服務,目的是保證不同平台的應用服務可以互操作。

這個定義已經指出了:Web service的通信方式使用標準的Web協議;Web service能夠提供多平台的支持。那麼,為了獲得更多的平台支持,最好也最方便的方法就是實用http協議作為通信協議,這樣不僅android/ios等移動中端可以訪問,pc平台的中端也可以支持,甚至web app也可以使用這一服務。

如果直接說整個數據的流向,可以總結為(以android為例):android向Web Service發起請求(WebService可以簡單理解為是一個網站,而發起請求則可簡單理解為是訪問一個網址),WebService根據請求請求資料庫並作相應的業務邏輯處理,向android返回數據(返回的數據可以簡單認為是訪問網址時瀏覽器看到的網頁),android再根據返回的數據進行解析,獲取相應的數據。

如果上面對於第一次接觸的同學還不好理解的話,下面舉個簡單的栗子,以獲取某省各省市的當天的天氣情況為例(純屬個人YY ):

  • 輸入:省名稱
  • 輸出:各城市天氣情況

那麼,android要做的就是用http協議訪問服務地址:

http://hostname/getCityWeather?province=hb

而服務端返回湖北省各城市的天氣情況的JSON 數據(當然還可以是其他格式的數據):

[{"CityId":1,"CityName":"武漢","LowTemperature":20,"HighTemperature":23,"Weather":"多雲"},{"CityId":1,"CityName":"仙桃","LowTemperature":20,"HighTemperature":23,"Weather":"多雲"}]

然後,android解析字元串(android中有JSON解析的庫),得到武漢跟仙桃的天氣情況,完成整個數據通信過程。這裡推薦使用 https://github.com/loopj/android-async-http 進行服務資源的訪問。

當然,上面的栗子只是一個很簡單的數據訪問,實際的WebService可能要涉及到更複雜的業務邏輯,同時要對訪問許可權進行控制,以保證數據的安全性,在這裡就不多說。

以上回答若有錯誤或不足之處還請各位同學指正。


謝謝你

其實前幾天老師講了一番 還有親自接觸了些項目

現在已經有所體會 基本知道怎麼操作了

剩下一些小問題 我自己思考下就可以


實在想不出有什麼應用場景。把資料庫連接過程暴露給客戶端,也太不安全了。


推薦閱讀:

MySQL訓練——SUM and COUNT@sqlzoo.net
mysql的MEMORY引擎為什麼應用沒有redis的應用廣泛?

TAG:MySQL | Android應用 | Android開發 |