2011-12-28 34 views
3

我的應用程序需要連接到並從位於服務器上的MySQL數據庫獲取數據。我已經成功地與當地我的應用程序SQLite數據庫接口,但是這是第一次我有一個遠程 MySQL數據庫進行交互。對iPhone應用程序需要連接到遠程MySQL的建議

我理解這個過程包括:

1)的iPhone應用程序發送該請求某種API的被執行的服務器
2)和沒有實際的「會說話」到數據庫服務器,然後它將查詢結果作爲XML(或JSON)返回。
3)然後iPhone解析返回的信息並使用它,但需要它。

我需要幫助的是第2步 - API。我不知道PHP,我不知道PERL - 我真的必須學習其中之一才能編寫API嗎?我認爲這個iphone到遠程的MySQL任務會非常普遍,以至於這些API已經在那裏,可以自由使用 - 但我沒有看到任何東西。

我知道Objective-C真的很好 - 但我應該使用XML還是JSON?我應該學習PERL還是PHP?

任何提示或建議將不勝感激。

回答

1

如果你不知道你正在看的是什麼,這很難給你一個明確的答案,但是聽起來你的web服務/ API部分應該很輕鬆。在這種情況下,用任何語言編寫它都應該很容易。如果你熟悉Objective-C,那麼拿起一些PHP或Ruby應該很容易。

你提到PHP和Perl。我用PHP看到的好處是它可以在任何託管服務上使用。例如,with PHP you can make MySQL queries in a few lines of code。否則,如果Web服務位於您擁有的計算機上,或者如果您擁有更多的靈活性,那麼使用Ruby和像Sinatra這樣的小框架編寫某些內容可能會更容易。

關於使用XML或JSON序列化數據,這取決於API返回的數據類型。一般來說,JSON會簡單得多,並且支持雙方都很好: - 使用Ruby,您可以看到在這裏使用JSON有多簡單:http://flori.github.com/json/ - 使用Objective-C,您可以使用從iOS5開始可用的NSJSONSerialization

+0

感謝PHP教程鏈接!我已經使用了那裏的代碼,並得到了一個基本的PHP查詢與我的MySQL數據庫工作。 PHP執行簡單的「SELECT * FROM myTable」命令,並返回來自我的數據庫的所有內容,並將結果顯示爲HTML表格。那麼這是否被認爲是Web服務?我剛寫了我的第一個API嗎? :-)如果是這樣,我現在如何從iPhone應用程序中調用它?我該如何調用這個PHP文件?通過NSURLRequest方法?像「requestWithURL:」等?我怎樣才能回到我的應用程序,所以我可以解析它?使用SOAP?你可以提供更多提示嗎? – sirab333 2011-12-29 02:54:22

+0

到目前爲止,您還沒有真正建立一個API,但確實是一個小型的Web服務。不要在HTML表格中顯示結果;實際上,甚至不會返回HTML。讓你的PHP代碼輸出JSON格式。確保頁面mimetype是JSON。在你的iPhone上,你用這個PHP文件構建一個NSURLRequest作爲URL。爲請求返回的數據主體將包含JSON格式文件。 – Kamchatka 2011-12-29 15:27:00

+0

好吧,自從我上一篇文章以來,我已經取得了很大的進步,現在一切都在進行中。你是對的:我正在生成HTML表格,但是我需要生成XML(我知道你建議使用JSON,但是因爲我知道_some_ XML,我想我會從那裏開始)。無論如何,它的工作很棒:-)我的PHP文件正在生成XML文件,然後由我的應用程序讀取和解析。我會盡量在JSON中做所有的事情。這裏有一個新問題:我注意到,當我在MySQL數據庫中進行更改時,這些更改未反映在PHP腳本生成的XML文件中。我必須再次運行PHP腳本(續) – sirab333 2011-12-30 01:25:12

0

那麼你可以直接從iPhone as show here跟使用Objective C的客戶端的遠程MySQL服務器

+0

好吧,這看起來很有趣(謝謝!) - 但我得問:用蘋果公司的這款圖書館是否能夠讓你的應用程序進入App Store?只問問原因,我知道他們對你的代碼編碼真的很嚴格......這方面的任何信息? – sirab333 2011-12-29 02:44:11

+0

我不認爲你會有任何問題。 – Puran 2011-12-30 06:51:47

+0

與此相關的一個問題是它需要將mysql服務器暴露給外部世界,並且它在託管解決方案上並不常見。 – Kamchatka 2011-12-30 09:15:44

相關問題