0

データベースに書き込むデータがあります(3つの文字列)。プライベートクラスDBHelperextendsSQLiteOpenHelperがあり、 dataBase = dbHelper.getWritableDatabase();があります。 dataBase.insert()を実行すると、nullPointerExceptionが発生します。

デバッガーでデータの書き込みを確認しましたが、nullと等しくありません。

DBHelper:

private class DBHelper extends SQLiteOpenHelper { //for write and read data from DB

static final String GROUPPS = "groupps";
static final String IMPORTANCE = "importance";
static final String NAME_OF_TABLE = "Person";
static final String PERSON_KEY = "perskey";

    private static final String MY_QUERY = "CREATE TABLE " + NAME_OF_TABLE + " ( " +
            PERSON_KEY + " TEXT, " +
            GROUPPPS + " TEXT, " +
            IMPORTANCE + " TEXT);";

    public DBHelper(Context context) {
        // constructor of superclass
        super(context, "MyDBB", null, 2);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.d("", "--- onCreate database ---");
        db.execSQL(MY_QUERY);
    }

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

    }
}

データベースにデータを書き込むための私の方法:

 public void writeDataToDB(ArrayList<Person> arrayList) {

    contentValues = new ContentValues();
    dbHelper = new DBHelper(activity.getApplicationContext());
    dataBase = dbHelper.getWritableDatabase();


    for (int i = 0; i < arrayList.size(); i++) {

        contentValues.put(PERSON_KEY, arrayList.get(i).getKey());
        contentValues.put(GROUPPPS, arrayList.get(i).getGroup());
        contentValues.put(IMPORTANCE, String.valueOf(arrayList.get(i).isImportant()));

        Log.e("writeDataToDB", "Start inserting " + contentValues.toString());
        long rowID = dataBase.insert(NAME_OF_TABLE, null, contentValues);
        Log.e("writeDataToDB - ", "Value inserted, rowID = " + rowID);
        contentValues.clear();
    }

}

そして私のメソッドでは、次の行に例外があります:long rowID = dataBase.insert(NAME_OF_TABLE、null、contentValues);
そしてrowID=-1それは意味します-何かが間違っています。

と私のLogCat:

Error inserting groupp=Withoutgroup importance=false perskey=0r2-2B43414D272B4D16
    android.database.sqlite.SQLiteException: table Persons has no column named groupp: , while compiling: INSERT INTO Persons(groupp,importance,perskey) VALUES (?,?,?)
4

2 に答える 2

1

"importance = false group = Without group perskey = 0r114343434343434343434343434343434343434343434343"

次のように、グループなしを一重引用符で'Without group'囲む必要があります。そうしないと、SQLiteは2番目の単語がSQLクエリの一部であると見なします。

于 2012-05-03T10:57:15.150 に答える
1

グループはキーワードであるため、テーブルにこれが列名として含まれている場合は、問題が発生する可能性があります。見る

group=Without group
于 2012-05-03T11:03:36.767 に答える