0

Android デバイスに SQLite データベースと MySQL リモート マスター データベースがあります。Android デバイスのユーザーは、データベースのレコードを変更 (つまり、追加、削除、変更) できます。私が望むのは、Android デバイスがオンラインのときはいつでも、Android デバイス上のデータベースをマスター データベースに自動的に同期することです。マスター データベースのレコードを同期すると、行われたすべての追加、削除、または場合によっては変更が反映されます。

さて、これが私がやろうと思っていることです。作成した Databasehelper クラスでは、各メソッドにコードを追加して、メソッドが呼び出され、対応するクエリがローカル Android データベースで実行されるたびに、実行されたクエリ文字列が単純なテキストに格納されるようにします。ファイル。そのため、変更はローカル データベースで発生し続ける可能性があり、クエリ文字列はファイルに保存され続けます。基本的に、SQL ダンプが作成されます (そうですか?)。クライアント側で JDBC MySQL 接続コードを記述すると、そのファイルから一度に 1 行ずつ読み取られ、マスター MySQL サーバーでクエリが実行されます。どのように聞こえますか?削除にも対応していると思います。

しかし、次の疑問が生じます。

1) JDBC Connector for MySql は Android デバイスで動作しますか? 私はネットを閲覧し、矛盾する答えを見つけました。うまくいかないと言う人もいます。プロジェクトのビルド プロパティに外部 jar ファイル mysql-connector-java-3.0.17-ga-bin を追加するだけでよいという人もいます。これについては本当に混乱しています。PHPの知識がないので、これがうまくいくことを願っています。

2) 接続後、MySql マスター データベースから結果を返す必要はないと思います。master データベースのテキスト ファイルに保存されている sql dump ive を実行するだけです。簡単ですね。

3) 次に、逆方向の同期を行います。Sqlite で見つけた良い点は、SQL クエリを受け入れることです。したがって、他の方法で同期するには、Android デバイスで特定のフォルダーに Sql ダンプ ファイルをダウンロードし、ダウンロードしたファイルから読み取り、クエリを実行するために作成されたデータベース アダプターを取得する必要があります。これははるかにタフに聞こえます。これを行うためのアイデアはありますか?1 つ確かなことは、SQLite データベースがリモート サーバーへの接続を許可しないということです。

疑問のいくつかは貧弱に見えるかもしれませんが、私は本当にあなたの助けが必要です. ご覧のとおり、私はデータベースの初心者です。

4

1 に答える 1

0

あなたが試みるかもしれない1つのアプローチ(ここで大声で考える)は次のとおりです:

  • 各テーブルにクライアントIDを含めて、それらが下にあるクライアントデバイスを追跡し、それを一意のキーの一部にします(サーバーとの同期をサポートする複数のデバイスがある場合)
  • また、サーバーの更新が成功したかどうかを追跡できるように、各データベース行にクライアント同期ステータスを含める必要があります
  • また、最初の転送後にクライアント行が更新されたかどうかを追跡する必要があります
  • 次に、接続時にサーバーへの更新されたすべてのクライアント行を選択できますか

これはすべて、次の場合にはるかに複雑になります

  • 削除をサポートしたい
  • 双方向レプリケーションが必要
  • より厳しいパフォーマンス要件があります
于 2012-05-30T09:56:37.253 に答える