0

私は現在、2 つのデータベースのコンテンツをマージする必要があるプロジェクトのデータベース部分に取り組んでいます。Android API/SDK 自体にデータベースをダンプする単純な API メソッドが存在するかどうかを尋ねたいと思います。 SQL テキスト ファイル。

実際、API ドキュメントには、そのような実装に関するヒントは見つかりませんでした。そして、カーテンの後ろのどこかに埋もれている単一行の方法があるとは思えません。

ただし、Android Linux の sqlite3 シェル ツールを使用して、次のように呼び出して回避策を既に作成しています。

String[] cmd = {"/system/bin/sh", "-c", ..., "sqlite3 ..."};
Runtime.getRuntime().exec( cmd );

2 つの選択肢があります。a) 出力ファイルに直接パイプするか、b) BufferedOutputStream を使用してファイルを書き込みます。

それにもかかわらず、おそらく互換性の問題が原因で、アプリ内で重要なシェル トリックを使用するのではなく、API 自体内でより便利な方法をお尋ねします。

私はまた、Android のデータベース メソッドを使用して 2 つのデータベースをマージすることについて、高速できれいな手がかりにも非常に興味があります。

ありがとう。

4

1 に答える 1

0

APIに組み込まれているものは何もありません。自分でINSERTステートメントをクエリして作成することができます。構築に関するブログエントリ(http://mgmblog.com/2009/02/06/export-an-android-sqlite-db-to-an-xml-file-on-the-sd-card/ )があります。クエリの結果からのXMLファイル。いくつかの調整を行うと、独自のダンプファイルを作成できます。

どのような種類のマージを行う必要があるかはわかりませんが、モデルオブジェクトでequalsメソッドをオーバーライドしてレコードを比較したり、特定のフィールドのデータを結合したりすることで、ORMLiteを使用できる場合があります(スキーマは同じです)、多くのSQLを記述する必要はありません。

于 2012-05-02T20:55:52.693 に答える