2012-01-16 20 views
1

私は、デバイス内のデータベースにアクセスするアプリケーションを開発しました。しかし、私はこのようなコード行を実行して、データベースへのアクセスも今それをすることはできません知らない:CREATE TABLE android_metadata failed

this.productoHelper.getWritableDatabase(); 

これは私の例外のスタックトレースです:ところで

01-16 19:20:04.629: E/Database(17236): CREATE TABLE android_metadata failed 
01-16 19:20:04.639: E/Database(17236): Failed to setLocale() when constructing, closing the database 
01-16 19:20:04.639: E/Database(17236): android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed 
01-16 19:20:04.639: E/Database(17236): at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method) 
01-16 19:20:04.639: E/Database(17236): at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1987) 
01-16 19:20:04.639: E/Database(17236): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1855) 
01-16 19:20:04.639: E/Database(17236): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820) 
01-16 19:20:04.639: E/Database(17236): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854) 
01-16 19:20:04.639: E/Database(17236): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:847) 
01-16 19:20:04.639: E/Database(17236): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:550) 
01-16 19:20:04.639: E/Database(17236): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203) 
01-16 19:20:04.639: E/Database(17236): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118) 
01-16 19:20:04.639: E/Database(17236): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187) 

! Eclipseエミュレータからこれを実行しようとすると、デバイスではなく正常に実行されます。

+1

あなたはアプリでデータベースを作成、またはアプリであらかじめ作られたものを出荷していますか? –

+0

adbを使用してアンインストールしてから再インストールしてください。古いバージョンのファイルが残っていて、それ以降のバージョンのアプリケーションをインストールするときに更新されない問題がありました。 – JustinDanielson

+0

私はヘルパークラスのonCreateが再帰的に呼ばれていると思います(getWritableDatabaseは(ヘルパーの)fromCreateから)何とか呼び出されますが、私は推測できるだけです – Selvin

答えて

0

は、データベースを開く前にSQLiteDatabase.NO_LOCALIZED_COLLATORSを使用してみてください。あなただけのSQLiteDatabase.openDatabaseを(呼び出し時にSQLiteDatabase.NO_LOCALIZED_COLLATORSフラグを使用する必要が

+0

本当に私の問題は、今私は私のプロバイダクラス '公共カーソル問合せ(ウリのURI、String []型の投影、文字列の選択、 \t \t \tのString [] selectionArgs、文字列はsortOrder){\t から自分のデータベースを開くことができないということですプライベートProductoSqliteHelper ProductoHelper; \t \t \t \t \t SQLiteDatabase db = this.productoHelper.getWritableDatabase(); ... これは私のすべてのプロバイダクラスで今は起こっていますが、理由はわかりません。私のデータベースが作成されているかどうかを確認しました。 :_( – vicmonmena

+0

Thanx @hovanessyanしかし、私は問題を解決しませんが、私は正しく使用していないと思う私はSQLiteDatabase.openDatabase(... SQLiteDatabase.NO_LOCALIZED_COLLATORS)を使用してペンデータベースのプロセスは何ですか? – vicmonmena

0

+0

こんにちは これはヘルパーとプロバイダクラスのコードです。すべて実行されましたが、現在は実行されていません(エミュレータではなく、デバイスで実行されます)。 public ProductoSqliteHelper(Context context、String name、 \t CursorFactory factory、int version ){ スーパー(コンテクスト、名前、工場、バージョン); // TODO自動生成コンストラクタスタブ } @Override公共ボイドのonCreate(SQLiteDatab ASEデシベル){ \t試し{ \t \t //db.execSQL(sqlCreate)。 \t}キャッチ(のSQLException E){ \t \t e.printStackTrace();私のデータベース名についてお聞きなぜ@hovanessyan \t}} ' – vicmonmena

+0

?私はまだ動作しません!私は自分のデバイス上で私のアプリを実行する同じエラーwheを取得し続けます。 – vicmonmena

+0

バージョン2.3.3のAndroid搭載端末では動作しません –

関連する問題