2

テーブルビューコントローラーを使用してデータのリストを表示するiPadアプリケーションがあります。これらのテーブルをSQLServerのデータに接続したいと思います。私はこのプログラミングの分野での経験がほとんどなく、どこから始めればよいのかわかりません。長期的には、アプリでデータを追加/編集/削除して、サーバーとも同期させたいと考えています。これは非常に幅広い質問であることを理解しているので、私は主に私が始めるのに役立つ提案を探しています。たとえば、私の目標を達成できるフレームワークでない場合、コアデータの調査と学習を開始したくありません。

つまり、アプリケーションをSQL Serverに接続して、データにアクセスしてデバイスと同期できるようにするにはどうすればよいですか?コード/ウォークスルーの例をいただければ幸いです。

4

2 に答える 2

1

私は現在、これと同じ機能を必要とするiOSアプリケーションで作業しています。サーバーでのmySQLデータベースクエリには、テーブル名やデータベース検索用語などの変数を受け入れることができるサーバー側のPHPスクリプトを使用しています。

私がやっていることは、Objective-CのNSMutableURLRequestを使用してHTTP GETリクエストを作成し、サーバーにリクエストを処理させ(PHPで)、データベースクエリの結果をJSON形式でアプリケーションに返すことです。SBJsonParserを使用して、返されたデータをNSDataに解析し、次にNSArrayオブジェクトに解析します。

Objective-CでHTTPリクエストを行う例:

NSString *urlString = [NSString stringWithFormat:@"http://website.com/yourPHPScript.php?yourVariable=something"];
NSURL *url = [NSURL URLWithString: urlString];

NSMutableURLRequest *request1 = [[NSMutableURLRequest alloc] initWithURL:url];

/* set the data and http method */  
[request1 setHTTPMethod:@"GET"];
[request1 setHTTPBody:nil];

/* Make the connection to the server with the http request */
[[NSURLConnection alloc] initWithRequest:request1 
                                delegate:self];

リクエストが戻ってきたときに実際にリクエストに応答するために追加する必要のあるコードが他にもあります。必要に応じて、その例を投稿できます。

これが最善の方法かどうかは実際にはわかりませんが、これまでのところうまくいきました。ただし、PHPを知っている必要があります。経験があれば、PHPについては知りません。


アップデート:

リクエストに応答する方法を示すサンプルコードを次に示します。私の場合、JSONでエンコードされた応答を取得しているので、SBJsonParserを使用して応答を解析します。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    /* This string contains the response data.
     * At this point you can do whatever you want with it 
     */
    NSString *responseString = [[NSString alloc] initWithData:receivedData
                                                     encoding:NSUTF8StringEncoding];

    /* Here I parse the response JSON string into a native NSDictionary using an SBJsonParser */
    SBJsonParser *parser = [[[SBJsonParser alloc] init] autorelease];

    /* Parse the JSON into an NSDictionary */
    NSDictionary *responseArr = [parser objectWithString:responseString];

    /* Do whatever you want to do with the response */

    /* Relsease the connection unless you want to re-use it */
    [connection release];
}

また、receivedDataというタイトルのNSMUtableDataインスタンス変数があると仮定して、これらのメソッドを追加します。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    [receivedData setLength:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{ 
    [receivedData appendData:data];
}
于 2012-07-12T23:39:11.400 に答える
0

SQLサーバーに直接接続することはお勧めしません。理論的には、iOS用にFreeTDSまたはunixODBCをコンパイルしてみることができます。私はそれを試しませんでしたが、私の経験から、少なくともFreeTDSはかなり移植性があるはずです。

ただし、SQL Serverとデータを同期する方法は他にもたくさんあります(ほとんどの場合、より適切で簡単です)。たとえば、iPad側でRestKitを使用し、SQLServer側で単純なRESTサービスを使用できます。または、 iOSライブラリを備えたODataを使用することもできます(最近知ったばかりですが、認める必要があります)。

于 2012-07-12T23:37:46.663 に答える