2013-08-03 81 views
3

我已經開始研究一個Android應用程序,我們需要使用MySQL作爲數據庫和Ruby on Rails作爲服務器端代碼。我們也將在設備上使用SQLLite(在需要時將同步兩個數據庫)。我搜索了網頁,找不到任何相關的教程/例子,可以作爲開始的基礎。Android - Ruby on Rails - MySQL

我已經經歷了MySQL和ROR教程,但仍然在將Android與ROR連接時感到困惑。

有人可以分享一些相關的教程/代碼片段,它可以解釋技術的完整鏈接。我的意思是如何從Android設備發送數據到MySQL,反之亦然。我理論上知道這個概念,但不知道如何以及從哪裏開始。

對於提出這樣一個基本問題,或者我聽起來含糊不清,但我是初學者,需要完成這項任務,我表示誠摯的歉意。謝謝你的期待..

回答

6

這裏是你應該知道什麼來實現你的目標的簡要概述。我不會深入細節,特別是因爲我從來沒有親自使用過RoR。請注意,其中一些部分可能與RoR不完全相關,但其背後的一般理念仍然適用。我會留給你去研究和弄清楚如何實現每個單獨的組件。

一切的一般流程如下:

Android應用< ==>網絡< ==> Web服務< ==> MySQL的

注雙刃箭,因爲數據將雙向流動。

Android App是客戶端,而Web ServiceMySQL數據庫位於您的Web Server上。爲了完整性,我只包含網絡部分,但一旦數據已發送到網絡上,您就不需要執行任何操作。

每個部分的簡要概述:

Android應用:

Android應用是發送和從Web服務器檢索數據的客戶端。我假設在你的應用程序中,你將允許用戶執行一些任務,這些任務本質上就是你想要在某個時刻發送給服務器的數據。

例如,用戶應該能夠輸入他的名字和最喜歡的動物。比方說,有一個實際的「提交」按鈕,用戶可以點擊。當點擊這個「提交」按鈕時,它應該將數據合併成適合通過網絡發送的格式。其中最常見的兩種是JSONXML。數據格式正確後,您需要使用某種網絡協議(如HTTP)將數據發送到服務器。爲了發送數據,您當然必須擁有一些URL作爲目標。可以說目標是www.example.com/webservice.php。這個目標是我們位於Web服務器上的Web服務。

一旦你發送了數據,服務器將回應一些數據,在這一點你可以隨心所欲地做任何事情。也許將其顯示給用戶,或者將其保存在SQLite數據庫中,或者兩者兼而有之。

要記住的關鍵是沒有魔法發生。我剛剛描述的所有內容都將以Java代碼實現,您將在某些時候編寫Android應用程序。

核心理念,你應該研究更多,並找出如何在Java代碼來實現:

  • JSON和XML
  • HTTP在Java中
  • REST和SOAP
  • Here是有關設置Android應用程序結構的可能方式的優秀視頻。
  • 確保您正在其他線程上執行Android應用程序中的所有網絡操作。一個易於使用的方法是Intent Service

Web服務:

這往往是最令人困惑的部分。對於嘗試訪問Web Server的客戶,A Web Service只是一些入口點。在使用RoR時,我的解釋可能略有不同,但適用相同的想法。請注意,目標URLwww.example.com/webservice.php。 Web服務實際上是存在於Web服務器上的PHP代碼,稱爲webservice.php。在您的Android應用程序中,當您使用HTTP將數據發送到目標URL時,Web服務代碼將在服務器上執行(並且還可以訪問您發送給它的數據)。在您的Web服務代碼中,您將基本上提取數據(具有某種格式,如JSON),抓取必要的部分,然後對其進行處理。在這種情況下,你很可能會查詢數據庫。在PHP中,編寫連接和查詢也在服務器上運行的MySQL數據庫的代碼很容易。當Web服務器檢索到數據庫的響應時,可以將其發送回Android應用程序。 就像以前一樣,請記住,沒有魔法在發生。所有這些想法都是通過編寫一些代碼來實現的。

主要思想來研究:

  • Ruby on Rails的Web服務
  • 如何訪問使用Ruby的MySQL數據庫on Rails的

MySQL數據庫:

這是您將數據存儲在We的地方b服務器。我不打算在這裏深入討論,因爲這只是要求您閱讀大量關於如何在Web服務器上設置MySQL數據庫的內容。學習如何創建適當的查詢也很重要,例如SELECTINSERT等等。

主要思想來研究:

如何在Web服務器

上設置一個MySQL數據庫如果你需要任何澄清,讓我知道!

+0

非常感謝。這有很大幫助。我只是試着用一個小應用程序來實現所有這些,看看它是否有效。再次感謝您的一切。 – Gaurav

+0

@Gaurav如果你不介意,你能接受/提出迴應嗎?如果出現任何問題,也請隨時問我。 – btse