2011-07-21 11 views
5

自分のSDカードにデータベースを作成しようとしています。私はSQLiteDatabase.openOrCreateDatabaseを呼び出すたびに、私はエラーを取得する:Androidでデータベースを開く/開く

07-21 13:33:17.587: ERROR/AndroidRuntime(5541): Caused by: android.database.sqlite.SQLiteException: unable to open database file

誰もがこれを引き起こす可能性のあるものを知っていますか?この上の可能性障害は、あなたが

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

しかし上のデータを格納する適切な権限を設定していないことが考えられ

File sdcard = Environment.getExternalStorageDirectory(); 

String dbfile = sdcard.getAbsolutePath() + File.separator+ "external_sd" + File.separator + Schema.DATABASE_NAME ; 

db = SQLiteDatabase.openOrCreateDatabase(dbfile, null); 
+1

また、/ data/dataではなく、SDカードにデータベースを書き込もうとしているのはなぜですか? –

+0

私は、データに何らかの問題がある場合、ユーザーのサポートを提供したいと考えています。私は実際にSQL Serverデータベースからデータを取得しているので、予期しないデータを検出して操作できるようにしたいと考えています。私はいくつかのクラスを作成してプライベートストレージからデータベースをインポートしてエクスポートできると思います。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

答えて

8

ワン:ここに私のデータベースクラスのopen()メソッドでは、私が持っているコードです。 SDカードは安全でないとみなされます。 sdストレージにデータを格納する権限を持つすべてのアプリケーションがデータベースにアクセスできるためです。

編集:別の考えられる問題は、外部ストレージが利用できないことです。外部ストレージが現在書き込み可能であることを確認する必要があります。 1つの方法は、getExternalStorageState(参照番号here参照)を介して状態を判断することです。

getExternalStorageState() returns MEDIA_SHARED if the media is present not mounted, and shared via USB mass storage. 

ReferenceWriting Text File to SD Card fails

+0

私はすでにそのマニフェストファイルにその権限セットを持っています。これは市場以外のアプリケーション用ですので、私のデータにアクセスしようとする他のアプリケーションについて心配していません。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

Environment.getExternalStorageState()==共有 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

あなたの問題は全く同じです@ == shared – fyr

関連する問題