私は、SQL CREATE TABLE
とINSERT
ステートメントを含む大きなテキストファイルを持っています。 SQLiteOpenHelper
onCreate
メソッドでこのファイルをインポートするにはどうすればよいですか?AndroidでSQLファイルをインポートしてSQLiteデータベースを作成するにはどうすればよいですか?
または、バイナリデータベースファイルを直接使用する方法はありますか?
Android 1.6との互換性が必要です。
私は、SQL CREATE TABLE
とINSERT
ステートメントを含む大きなテキストファイルを持っています。 SQLiteOpenHelper
onCreate
メソッドでこのファイルをインポートするにはどうすればよいですか?AndroidでSQLファイルをインポートしてSQLiteデータベースを作成するにはどうすればよいですか?
または、バイナリデータベースファイルを直接使用する方法はありますか?
Android 1.6との互換性が必要です。
SQLiteOpenHelper onCreate()メソッドでは、db.execSQL(...)
を使用できますが、これは「テキストファイル」の構造(およびその大きさ)によって異なります。
また、あなたは「船のあなたのアプリとのSQLite DBことができます - あなた自身のsqliteのDBファイルのインポートに問題があなたのことであるあなたにいくつかのアイデアを与えるために、このリンクを参照してください...
私は同じ問題を解決しなければなりませんでした。直接行う方法を見つけることができませんでしたので、ファイルをres/rawディレクトリに置き、openRawResource
を使用してInputStreamを取得しました。その後私は;
で終わるまで行を読みました。私はその後、ステートメントをsqliteデータベースに渡しました。
うまくいけば、他の誰かがより良い方法を提供してくれることを望みますが、私はそれをやり遂げる方法を追加すると思っていました。
ファイルを作成したエンジンのバージョンが、dbがインストールされているAndroidデバイスのエンジンのバージョンと一致していることを確認する必要があります。 SQLスクリプトファイルを実行して、実際にAndroidデバイスにインストールされているエンジンを使用してデータベースが作成されていることを確認します。
Steve Prenticeの回答に続きます。それは私の実装です:解像度で
mydb.sqlファイル/生
CREATE TABLE table1(col1 INTEGER PRIMARY KEY, col2 TEXT);
CREATE TABLE table2(col1 INTEGER PRIMARY KEY, col2 TEXT, col3 INTEGER);
MyClass.java
InputStream inputStream = context.getResources().openRawResource(R.raw.mydb);
String queries = "";
try {
queries = IOUtils.toString(inputStream);
} catch (IOException e) {
Util.logException(e);
}
for (String query : queries.split(";")) {
db.execSQL(query);
}
取得する方法はあり 'その/データ/データ/ YOUR_PACKAGE /データベース/'パス、それをハードコードする必要はありませんか? – rid
@Radu:getDatabasePath(...)にhttp://developer.android.com/reference/android/content/Context.html#getDatabasePathを試してください。 – Squonk