2017-01-02 15 views
0

私は、データベースを使用するには次のGクラスを作成しましたができませんでしたが、最初の段階で、私はこのエラーを得た:は、Android Studioで、データベースを開く

のAndroidManifest.xmlでも
Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 

私が追加:

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

これは私のGクラスです:

package com.example.n5110.database; 

import android.app.Application; 
import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Environment; 
import java.io.File; 

public class G extends Application { 
    public static Context context; 
    public static SQLiteDatabase database; 
    public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath(); 
    public static final String DIR_DATABASE = DIR_SDCARD + "/database-test/"; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     context = this.getApplicationContext(); 

     new File(DIR_DATABASE).mkdirs(); 
     database = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE + "/database.sqlite", null); 
    } 
} 

誰もがアイデアを持っています?

+2

を役に立てば幸い.html)。 –

+1

@Prera​​kSolaそうであれば、彼はセキュリティ例外を手に入れたでしょう。 Sidenote:クラスG:Dを呼び出す人AFAIK使用可能なメモリがない場合、データベースが開かないことがあります。少なくともそれをチェックして、それを排除することができます。 – Vucko

+0

メモリはどのようにチェックする必要がありますか?私は初心者です! @Vucko – MarAnd

答えて

0

ファイルdbFile = myContext.getDatabasePath(DB_NAME); return dbFile.exists();

はhttps://developer.android.com/training/permissions/requesting([実行時の権限]あなたがAPI 24以上で、デバイス/エミュレータ上でそれをテストしている場合は、使用して定義さ、それは

+0

これらのコードはどこに追加しますか? @Waqas Ahmed – MarAnd

+0

それは実際にあなたのデータベースファイルを検索し、パスを取得し、それを –

+0

を読むのに役立つが、私はそのエラーがあります! @Waqas Ahmed – MarAnd

関連する問題