1

MainActivity の onCreate 中に sqlite データベースに値を自動的に挿入しようとしています。

ここにいくつかのコードがあります:

public static final String KEY_RULEID = "_id";
public static final String KEY_RULE = "rule";
public static final String KEY_TYPE = "type";
public static final String KEY_ENABLED = "enabled";     
private static final String rulesc = "??????";
private static final int typesc = 0;
private static final String enabledsc = "TRUE";

private SQLiteDatabase db;

    /* insert default rules into the database */
private void insertDefaultRule(String rule, int type, String enabled) {
    ContentValues defaultValues = new ContentValues();
    defaultValues.put(KEY_RULE, rulesc);
    defaultValues.put(KEY_TYPE, typesc);
    defaultValues.put(KEY_ENABLED, enabledsc);
    System.out.println("line 175");
    db.insert(Constants.DATABASES_TABLE_RULES, null, defaultValues);
}

行 175 がシステム ログに出力されるので、db.insert 行がエラーの原因であることがわかります。主なエラーは NullPointerException ですが、これは残りの半分であり、役立つ場合があります。

java.lang.NullPointerException
E/AndroidRuntime(7178):     at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
E/AndroidRuntime(7178):     at com.prototype.sample.RulesDatabaseAdapter.open(RulesDatabaseAdapter.java:55)
E/AndroidRuntime(7178):     at com.prototype.sample.RulesDatabaseAdapter.insertDefualtRules(RulesDatabaseAdapter.java:155)
E/AndroidRuntime(7178):     at com.prototype.sample.MessagesList.DefaultRules(MessagesList.java:88)
E/AndroidRuntime(7178):     at com.prototype.sample.MessagesList.onCreate(MessagesList.java:53)
E/AndroidRuntime(7178):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(7178):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
E/AndroidRuntime(7178):     ... 11 more

編集:情報を追加しました。このクラスは SQLiteOpenHelper を拡張します。

Constants.DATABASES_TABLE_RULES は、Constants クラスで次のように定義されています。

    public final static String DATABASES_TABLE_RULES = "rules";

DB を開くコード:

    /* opens the database */
public RulesDatabaseAdapter open() throws SQLException {
    db = DBHelper.getWritableDatabase();
    return this;
}
4

0 に答える 0