2012-04-13 9 views
3

私は2つのデータベースを持つAndroidアプリを持っています。 Webサーバー上の2つの同一の(同じフィールド構造とフィールド名の)データベースとそれらを同期する必要があります。しかし、まずWebサーバー上の別のデータベースを調べ、そこから情報を取り出し、それらの2つのデータベースを最初のデータベースのいくつかの追加データと同期させる必要があります。私はしばらくの間、Androidアプリを開発していました。基本的なCRUDを使ってWebアプリケーションを構築するには、MySQLで十分なPHPを学んだだけです。Androidデータベースとサーバーデータベースを同期

私が質問のカップルを持っている:

  • は、私は、Androidでそれらのデータベースを同期する方法は?

  • 両方の方法で同期ができますか? Androidでデータベースのデータを変更した場合は、それに応じてWebサーバーでデータベースのデータを変更できますか?

私は年配の人のための基本的なGUIで働いて、Androidの携帯電話を使用できるようにしています。私のWebアプリケーションは、Androidアプリケーションのデータベースに連絡先やリマインダを追加する必要がありますが、私のAndroidアプリケーションに連絡先やリマインダーを手動で追加すると、Webアプリケーション内の連絡先やリマインダを手動で確認することもできます。

ありがとうございました! :)

+0

あなたは偉大なポインタを持っています以下に記載されています。ただし、必ずしもアンドロイドデバイスにデータベースを用意する必要はありません。 1つはデバイスに、もう1つはサーバーに置く理由は何ですか?代わりに、サーバー上にデータベースを置いて、他の人が示す方法でデータベースと通信してください。 Androidデバイスは通常インターネットに接続されているため、データベースの同期の手間を省くことができます。 – Ameen

答えて

2

あなたが基本的にやりたいことは、デバイス上のデータとサーバー上のデータをブリッジするAPIを作成することだと思います。

このsiteは、基本APIをゼロから作成する際に多くの助けになりました。 GETとPOSTの基本について理解しておく必要がありますが、単純なデータ転送のためのAPIを作成するプロセスがかなり簡単です。

APIを使用してデータベースを作成するプロセスを合理化したい場合は、StackMobというサービスをチェックアウトすることをおすすめします。このサービスでは、かなりシンプルな(複雑な)表をいくつか設定でき、HTML5、iOS、Androidにこれらの表を接続するのに役立つAPIを生成します。

0

DataBaseサーバー& Androidデバイスと通信できるようにWebServiceが必要です。

Webサービスの開発:データベースサーバーからデータをフェッチするロジックが必要です&データベースサーバーに戻る。

Android側では、KSoapを使用してWebサービスを使用できます。 See this example here.

+0

私はAndroid側でWebServiceを開発しました。これはデータをサーバーに送信し、サーバーからも取得できますか?サーバー側で何かする必要がありますか? –

0

同期を達成するには、Webサービスを開発する必要があります。私はアンドロイドアプリケーションとasp.netアプリケーション間の通信を確立するためにSOAPプロトコルを使用しています。基本的に私たちはasp.netとSQL Server 2008の管理パネルとサーバーデータベースを持つゲームアプリケーションを開発しました。アンドロイドアプリケーションはSQLiteデータベースを持っています。これらの両方のデータベースは、Webサービスを通じて同期されます。

2

AndroidアプリケーションとPHPサーバー間でデータを同期する方法を共有します。PHPファイルを使用すると、Webサービスなどより簡単です。同じ結果が返されます。

照会

* - > PHP側:*

  • 例えば、あなたのテーブル構造を作成します。MyTableName:列ログイン/パスワード
  • は、データを照会するPHPファイルを作成します。あなたのテーブル名から

    <?php 
    //To Connect to your Data base 
        mysql_connect("localhost","root",""); 
        mysql_select_db("YourDataBaseName"); 
    // To execute a query from Your table 
    
        $sql=mysql_query("SELECT * FROM `Your_Table_Name"); 
    
        while($row=mysql_fetch_assoc($sql)) 
        $output[]=$row; 
    
    // Convert to Json format 
    print(json_encode($output)); 
    // mysql_close(); 
    ?> 
    
  • 例えば、あなたのテーブル名と0
  • 名前あなたのPHPファイル:MyTableName.php

  • ルートサーバーのディレクトリにこのファイルを配置します。たとえばWAMPをサーバにwwwディレクトリ

  • テストに使用して戻りデータをブラウザでは、 www.localhost/MyTableName.phpのようなURLを使用して、通常、すべてのクエリ のコンテンツがJson形式になります。

* - >アンドロイド側:*

  • マニフェストのインターネットアクセス権を追加 'ClientHTTP' https://www.dropbox.com/s/odpaus1tjhd9orv/ClientHTTP.java

  • を、このクラスをダウンロードしてください。あなたのボタン同期のクリックインサイド

  • は入れ:*

    を更新

    String lReturn=_myClientHtpp.readFromUrl(www.localhost/MyTableName.php); 
    // It will return a json format (Like navigator) 
    //Code to Clear your data from Sqlite data base TABLE .... 
    
    try { 
    // Create your Json Array 
    JSONArray lList=new JSONArray(lReturn); 
    // Iterate the json arry to get each Json object 
    for (int i = 0; i < lList.length(); i++) { 
    
    JSONObject lObject=lList.getJSONObject(i); 
    
    String lLogin=lObject.getString("Login"); 
    String lPWD=lObject.getString("PassWord"); 
    
    //Code to Insert in Sqlite data base ..... 
    } 
    } catch (JSONException e) { 
    e.printStackTrace(); 
    } 
    

- > PHP側:*

<?php 
//Connect to Database 
    mysql_connect("localhost","root",""); 
    mysql_select_db("YourDataBase"); 


$sql= mysql_query("INSERT INTO YourTableName (Login,PassWord) VALUES ('".$_REQUEST['PARAM_Login']."','".$_REQUEST['PARAM_PWD']."')"); 

if($sql==1){ 
echo "true"; 
}else{ 
echo "false"; 
} 

// mysql_close(); 
?> 
  • メインサーバーのディレクトリWWWで、このPHPファイルを入れて、 に名前を付けるInsert.php
  • このURL www.localhost/insert.php?PARAM_LOGIN=test&PARAM_PWD=test
  • でブラウザを使用して挿入をテスト通常は、「真」と、サーバーのテーブル名aになります新しい テスト/テストの行が追加されます。

* - >アンドロイド側:*あなたのボタンの書き込みを '追加' をクリックするインサイド

  • // List of params 
    ArrayList<NameValuePair> lListOfParams=new ArrayList<NameValuePair>(); 
    
    // Param login 
    BasicNameValuePair PARAM_Login=new BasicNameValuePair("PARAM_Login", "test from Android"); 
    // Param PWD 
    BasicNameValuePair PARAM_PWd=new BasicNameValuePair("PARAM_PWD", "Test from Android"); 
    
    // Add params to List 
    lListParams.add(PARAM_Login); 
    lListParams.add(PARAM_PWd); 
    
    // Execute the post method from your ClientHttp class 
    boolean lIsInsert=_myClientHtpp.SendToUrl("www.localhost/insert.php", lListOfParams); 
    
    if(lIsInsert) 
        Toast.makeText(this, "Insert Success", Toast.LENGTH_LONG).show(); 
    else 
        Toast.makeText(this, "Insert Error", Toast.LENGTH_LONG).show(); 
    
  • あなた独自のサーバーを置き換えるローカルホストごとにしている場合あなたのドメイン名。

  • あなたがエミュレータを使用している場合は、クエリのURLになる例えば、あなたの実際のIPアドレス
    ごと をあなたのローカルホストのドメーヌ名に置き換えます。 192.168.1.2/MyTableName.php

関連する問題