5

アクティビティの 1 つでデータベースにアクセスするための静的メソッドを作成しましたが、データベースを開くときにエラーが発生し続けます。

主な活動

 public static String getStudentData() {

    SQLiteDatabase sampleDB =  null;

    try {
            //NOT WORKING
        sampleDB =  SQLiteDatabase.openDatabase("studentDB",null, SQLiteDatabase.CREATE_IF_NECESSARY); 
            //Also not working
        //sampleDB =  SQLiteDatabase.openOrCreateDatabase("studentDB", null);

        Cursor c = sampleDB.rawQuery("SELECT * FROM student where id='1'", null);

        if (c != null ) {
            if  (c.moveToFirst()) {
                do {
                    //...                       
                }while (c.moveToNext());
            } 
        }
        c.close();
    } catch (Exception se ) {
    } finally {
            sampleDB.close();
    }
}

その他の活動

String student = MainActivity.getStudentData();

私は得ていsqlite3_open_v2("studentDB", &handle, 6, NULL) failedます。何が問題なのかわかりません... も使用してみMODE_WORLD_WRITEABLEました。現在MODE_PRIVATE、データベースの作成に使用しています。私を助けてください!

4

2 に答える 2

6

への最初の引数openDatabaseは db へのフル パスである必要があるため、次の場合:

//The Android's default system path of your application database.
private static String DB_PATH = "/data/data/YOUR_PACKAGE/databases/";

private static String DB_NAME = "studentDB";

次に、次を呼び出す必要があります。

sampleDB =  SQLiteDatabase.openDatabase(DB_PATH + DB_NAME, null, SQLiteDatabase.CREATE_IF_NECESSARY); 
于 2011-10-12T19:29:25.693 に答える
3

メソッドContextWrapper#getDatabasePath(java.lang.String)を使用して、結果を に渡しSQLiteDatabase.openDatabaseます。

File dbFile= myActivity.getDatabasePath("studentDB");
sampleDB = SQLiteDatabase.openDatabase(dbFile.getAbsolutePath(), null, SQLiteDatabase.CREATE_IF_NECESSARY);
于 2012-04-27T11:44:27.983 に答える