2

基本的に、SQLite データベースをカプセル化する ContentProvider を作成しようとしています。私はオンラインであらゆる場所を調べ、いくつかの異なるチュートリアルに従いましたが、同じ問題が発生し続けています。多くの人が同じ質問をしていることに気付きましたが、そこにあるアドバイスはどれも役に立ちませんでした。

基本的に、SQLiteOpenHelper で「getWriteableDatabase」を呼び出すたびに、null ポインター例外がスローされ、何も作成されません。これが私のコードです:

public class DatabaseProvider extends ContentProvider{

private static int DATABASE_VERSION = 1;

public static final String GRADE_COMPOSITION_TABLE = "gradecompositiontable";
public static final String GRADE = "Grade";
public static final String CLASS = "Class";
public static final String CLASS_CODE = "Class_Code";


public static final String ACTIVITY_CODE_TABLE = "activitycodetable";
//CLASS_CODE
public static final String ACTIVITY_CODE = "Activity_Code";

MainDatabaseHelper dbHelper;
public SQLiteDatabase dBase;

@Override
public Uri insert(Uri uri, ContentValues values)  throws SQLiteException{
    System.out.println("Helper: " + dbHelper);
    dBase = dbHelper.getWritableDatabase();  <<<Null exception here
    return null;
}

@Override
public boolean onCreate(){
    dbHelper = new MainDatabaseHelper(getContext());
    return (dbHelper == null)?false:true;
}


protected static final class MainDatabaseHelper extends SQLiteOpenHelper{

    public static String overallDBName = "TeachMEDatabase";

    private static final String SQL_CREATE_GRADE_COMP_TABLE = 
            "CREATE TABLE " +
            GRADE_COMPOSITION_TABLE +
            "(" +
            GRADE + " INTEGER, " +
            CLASS + " TEXT, " +
            CLASS_CODE + " INTEGER PRIMARY KEY)";


    public MainDatabaseHelper(Context context){
        super(context, overallDBName, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_GRADE_COMP_TABLE);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
        db.execSQL("DROP TABLE IF EXISTS " + GRADE_COMPOSITION_TABLE);
        onCreate(db);
    }

}

メイン アクティビティからこのオブジェクトを作成し、「挿入」を呼び出すまではすべて正常に動作します。これがクラッシュするときです。

編集:これがスタックトレースです

04-09 21:53:46.301: E/AndroidRuntime(3397): Uncaught handler: thread main exiting due to uncaught exception
04-09 21:53:46.307: E/AndroidRuntime(3397): java.lang.RuntimeException: Unable to start activity ComponentInfo{sioy.teachme/sioy.teachme.TeachMEFirstActivity}: java.lang.NullPointerException
04-09 21:53:46.307: E/AndroidRuntime(3397):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
04-09 21:53:46.307: E/AndroidRuntime(3397):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
04-09 21:53:46.307: E/AndroidRuntime(3397):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
04-09 21:53:46.307: E/AndroidRuntime(3397):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
04-09 21:53:46.307: E/AndroidRuntime(3397):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-09 21:53:46.307: E/AndroidRuntime(3397):     at android.os.Looper.loop(Looper.java:123)
04-09 21:53:46.307: E/AndroidRuntime(3397):     at android.app.ActivityThread.main(ActivityThread.java:4363)
04-09 21:53:46.307: E/AndroidRuntime(3397):     at java.lang.reflect.Method.invokeNative(Native Method)
04-09 21:53:46.307: E/AndroidRuntime(3397):     at java.lang.reflect.Method.invoke(Method.java:521)
04-09 21:53:46.307: E/AndroidRuntime(3397):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
04-09 21:53:46.307: E/AndroidRuntime(3397):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-09 21:53:46.307: E/AndroidRuntime(3397):     at dalvik.system.NativeStart.main(Native Method)
04-09 21:53:46.307: E/AndroidRuntime(3397): Caused by: java.lang.NullPointerException
04-09 21:53:46.307: E/AndroidRuntime(3397):     at sioy.teachme.data.DatabaseProvider.insert(DatabaseProvider.java:54)
04-09 21:53:46.307: E/AndroidRuntime(3397):     at sioy.teachme.TeachMEFirstActivity.onCreate(TeachMEFirstActivity.java:15)
04-09 21:53:46.307: E/AndroidRuntime(3397):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-09 21:53:46.307: E/AndroidRuntime(3397):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
04-09 21:53:46.307: E/AndroidRuntime(3397):     ... 11 more
4

0 に答える 0