3

私はAndroidアプリケーションを開発しています

  • 私のデバイスの sq lite db

  • それらを同期するメインサーバー上のサーバーsql db、2つの同一
    (同じフィールド構造とフィールド名)

  • これらのデータベース間の同期を2つの方法で開発する必要があります

  • Androidでデータベースデータを変更すると、Webサーバーのデータが変更されます

  • サーバーからデータを変更すると、Androidのデータが変更されるはずです

  • 同期は 1 日で自動的に実行されます

    今問題は、Android でこれらのデータベースを同期するにはどうすればよいですか? 私はモバイルの世界に新しく参入し、私もインターンであり、彼らは私がこの仕事をした場合、私は永久になると言われました。

いくつかのことを見つけましたが、私は初心者レベルです。サンプルが見つかりません。ここで同様の質問を見つけましたが、データを双方向でのみ同期するコード、サンプルは見つかりません。

誰かが私(オープンソースプロジェクト)またはいくつかの説明付きのサンプルコードを提供してくれれば幸いです。

または、これを行う方法を教えてくれるようなもの。

AndroidフォンのSQLiteデータベースをサーバーのMySQLデータベースと同期するにはどうすればよいですか?

Android 双方向 sqlite データベース同期

これらの記事を見つけましたが、役に立ちません。

4

1 に答える 1

5

これをあなたのAndroidサービスとして使用してください

public class Connector {

HttpClient httpClient = null;
HttpPost httpPost = null;
HttpResponse httpResponse = null;
String serverResponse = null;

public String callService(String url){

    try{
        httpClient = new DefaultHttpClient();
        httpPost = new HttpPost(url);
        httpResponse = httpClient.execute(httpPost);
        //Log.e("URL Response", serverResponse);
        serverResponse = EntityUtils.toString(httpResponse.getEntity());
    }
    catch(Exception ex){
        Log.e("Exception in connectivity", ex.toString());
    }
    //Log.e("URL Response", serverResponse);
    return serverResponse;
}

}

このクラスは、android db の更新に役立ちます

public class DbSync extends SQLiteOpenHelper {

private static String DB_PATH = "";
private static final String DATABASE_NAME = "Your_Db_Name";
private SQLiteDatabase sqliteDb = null;
private String path = null;

public DbSync(Context context) {
    super(context, DATABASE_NAME, null, 1);
    DB_PATH = "/data/data/" + context.getPackageName() + "/databases/";
    path = DB_PATH + DATABASE_NAME;
}

@Override
public void onCreate(SQLiteDatabase db) {

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

public void syncUsers(){
    try {
        String response = new TaskAsync().execute("URL_Where_Service_Running").get();
        Log.d("response", response);

        String tableName = "Table_Name";

        sqliteDb = SQLiteDatabase.openDatabase(path, null,  SQLiteDatabase.OPEN_READWRITE);
        sqliteDb.delete(tableName, null, null);

                    //here you have to parse your data from DB and insert using 
                    ContentValues values = new ContentValues();
        values.put("col_name1", parsedColumnValue);
        values.put("col_name2", parsedColumnValue);

        long status = sqliteDb.insert(tableName, " ", values);

        Log.d("database", Long.toString(status));


        sqliteDb.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
}

DB から返されたデータに従って、上記のコードを調整する必要があります。それが役に立てば幸い:)

于 2013-01-22T09:39:42.853 に答える