2016-10-09 8 views
-1

私は研究を全面的に行いました。ヘルパーのコンストラクタにOpenOrCreateDatabaseを追加しても機能しませんでした。マニフェストのパーミッションを追加することもできませんでした。私もアプリを再インストールしようとしました。 は、ここに私のヘルパークラスがあります:Android:Sqliteデータベースを開くことができません

public class UserGameData extends SQLiteOpenHelper { 
    SQLiteDatabase db; 
    public static final String DB_NAME ="userdata.db"; 
    public static final int DB_VER = 1; 


    public UserGameData(Context context) { 
     super(context,DB_NAME, null,DB_VER); 
     int i =0; // the error is this line for some reason?? 
     context.openOrCreateDatabase(DB_NAME,DB_VER,null); 
    } 


    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String create = ("CREATE TABLE IF NOT EXISTS GameData (Character TEXT NOT NULL,Unlocked BOOLEAN NOT NULL DEFAULT 0, IntroVn BOOLEAN NOT NULL DEFAULT false, EndVn BOOLEAN NOT NULL DEFAULT false,HighScore int not null DEFAULT 0,Unlocks text not null DEFAULT yellow,UnlockCondition INTEGER NOT NULL DEFAULT 50, PRIMARY KEY (Character))"); 
     db.execSQL(create); 
     init(); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 


    } 

ここで私はまた、パスをハードコーディング

public static final String DB_NAME ="/data/data/com.example.reimu.buttonchange/databases/userdata.db3userdata.db"; 
を試みたヘルパー

public class Select extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.select); 
     UserGameData db= new UserGameData(this); //error occurred here 
    } 
    } 

を使用してアクティビティエラー

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: com.example.reimu.buttonchange, PID: 21383 
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.reimu.buttonchange/com.example.reimu.buttonchange.Select}: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2464) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2524) 
         at android.app.ActivityThread.access$900(ActivityThread.java:154) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1391) 
         at android.os.Handler.dispatchMessage(Handler.java:102) 
         at android.os.Looper.loop(Looper.java:224) 
         at android.app.ActivityThread.main(ActivityThread.java:5526) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
        Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 
         at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) 
         at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:213) 
         at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:197) 
         at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) 
         at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) 
         at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) 
         at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:806) 
         at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:791) 
         at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694) 
         at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:709) 
         at com.example.reimu.buttonchange.UserGameData.<init>(UserGameData.java:23) 
         at com.example.reimu.buttonchange.Select.onCreate(Select.java:37) 
         at android.app.Activity.performCreate(Activity.java:6285) 
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2524)  
         at android.app.ActivityThread.access$900(ActivityThread.java:154)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1391)  
         at android.os.Handler.dispatchMessage(Handler.java:102)  
         at android.os.Looper.loop(Looper.java:224)  
         at android.app.ActivityThread.main(ActivityThread.java:5526)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  

です

ヘルプはrです

+1

なぜあなたは 'userdata.db3userdata.db'にアクセスしようとしていますか?あなたのdb名は 'userdata.db'です –

答えて

1

context.openOrCreateDatabase(DB_NAME,DB_VER,null)SQLiteOpenHelper)は正しくありません。 stacktraceに見られるように、そこにエラーが発生します。 2番目の引数が1であるため、おそらくMODE_WORLD_READABLEからopenOrCreateDatabase()を意味する可能性があります。

その呼び出しを削除します。

SQLiteOpenHelperでデータベースファイルを作成するには、getWritableDatabase()またはgetReadableDatabase()をヘルパーで呼び出します。

+0

おかげさまで! 'CursorIndexOutOfBoundsException:Index -1が要求されました。大きさは1です。' 'Boolean result =((db.query(" GameData "、new String [] {" Unlocked "}、" Character =? "、new String [] {name}、null、null、null))。getInt(0)== 1);'。どんな考え? – Pear

+0

有効な行にカーソルを置くには、 'moveToFirst()'のような 'moveTo ...()'メソッドの1つを呼び出す必要があります。 – laalto

関連する問題