2011-07-05 68 views

回答

9

您的應用不會執行實際的查詢。這樣做的正確方法是爲您的網站設置一個API,以便該網站執行查詢並將適當的數據返回給您的應用程序。

您的API通常將包含許多返回爲您的應用程序格式化的數據的終點。例如,您可以創建一個PHP或Python頁面來查詢數據庫中給定用戶的所有帖子,並以JSON或XML編碼數組的形式返回它們。 (數據格式完全取決於你,有用於解析iOS的兩種格式的框架)。

例如,假設你的服務器上有一個PHP頁面,它返回當前的星期幾。你的PHP將是這個樣子:

<?php 
    echo date("l"); 
?> 

讓我們想象一下,你已經保存以此爲http://example.com/dayoftheweek.php

我建議使用從你的應用程序中執行HTTP請求ASIHTTPRequest框架。這就是說,讓我們繼續並建立到您的PHP頁面的連接。假設你已經ASIHTTPRequest都設立了你的項目,這裏有一個請求可能是什麼樣子:

NSURL *url = [NSURL URLWithString:@"http://example.com/dayoftheweek.php"] 
ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:url]; 
[request setDelegate:self]; 

現在,你需要實現ASIHTTPRequest委託方法,解析返回的數據。處理已完成請求的方法如下所示:

- (void)requestFinished:(ASIHTTPRequest *)request{ 
    //Here you would store the returned data and/or parse it 
} 

要實現API,您的PHP頁面將更加複雜。你會構建一個更復雜的請求,傳遞變量等,PHP頁面就像普通的Web服務一樣,返回你請求的數據。

+0

但什麼類型的http請求?我如何製作API?那是PHP?這將是一個如何做到這一點的例子? – StanLe

+0

我不認爲他真的需要重複的答案。 – pt2ph8

+0

@StanLe - 我已經更新了一個基本的例子。 @ pt2ph8 - 我也不這麼認爲,這就是爲什麼我更新了我的答案。 ;-) – Moshe

0

我認爲你的意思是MySQL。通常從外部訪問MySQL數據庫是有原因的。你可能想編寫一個訪問你的數據庫的API。您的iPhone應用程序將與此API進行通信以插入和檢索數據。

+0

那麼,什麼樣的API?我會像一些PHP腳本或什麼嗎? – StanLe

+0

是的。你可以做的最簡單的事情是一個PHP腳本,它根據傳遞給它的參數返回JSON或XML格式的數據。然後,使用ASIHTTPRequest以及周圍的許多JSON和XML庫之一(我推薦用於JSON的YAJL和用於XML的GData)來從應用程序解析數據,並使用它進行操作。 – pt2ph8

+0

您可以使用Web服務。假設你想從服務器數據庫獲取某個用戶的ID。要實現這一點,可以有一個Web服務API - (NSNumber *)IDForUserWithName:(NSString *)用戶名。這個調用會發送到您的服務器,該服務器在內部爲從數據庫傳入的用戶名獲取ID。 – Subhash

0

@StanLe:你不能直接在本地應用程序中使用SQL Server或mySQL。但是,您可以通過以下方式將應用程序與外部SQL數據庫進行通信。

  1. 使用PHP或C#或任何提供XML文件的工具創建XML API。
  2. 在xcode中使用一些解析器(NSXMLParser),它可以讀取XML頁面的標籤。

這裏是example

這裏是sample Code

另一個非常Simple Example

如果仍然混淆,請回信。

+0

我對PHP有點熟悉,並曾在PHP中做過SQL查詢。唯一引起我關注的是我將查詢結果打印到控制檯(到電腦屏幕)。我將如何收集這些結果並在Objective-C中讀取它們? – StanLe

+0

你能告訴我一些細節,比如你正在使用什麼數據庫和平臺,以及你想在本機應用中看到什麼樣的結果? – Xorsat

+0

卓越的鏈接。我堅持的唯一的事情是如何在我的服務器上運行一個php文件,例如來自objective-c的www.mysite.com/myfile.php,並將結果返回。我希望能夠運行一個具有特定輸入(例如名稱)的php文件,該文件將用於查詢數據庫。然後,PHP將從我的MySQL數據庫中返回一行。然後我的Objective-C會得到這個結果。 – StanLe

0

用於與任何外部數據庫進行通信的方法是通過Webservices(我們在此稱爲API)。你向服務器發出一個請求,服務器通常是服務器上的一個函數調用,並且服務器用請求的數據回覆你。

你可以通過This。就PHP和其他相關術語而言,你將不得不做出一些努力,谷歌一些代碼。 This也可以有一定的用處。通常爲iPhone編寫的Web服務使用XML/JSON for iPhone。 JSON/XML解析器可用

相關問題