2012-05-03 39 views
0

我有一些數據寫入數據庫(三個字符串); 我有一個私有類DBHelper延伸SQLiteOpenHelper 和我有數據庫= dbHelper.getWritableDatabase(); 當我做dataBase.insert()我有一個nullPointerException。NullPointerException當我插入數據庫(android)

我檢查了我的數據在debuger中寫入,它們不等於null;

DBHelper:

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(); 
    } 

} 

而且在我的方法,我有例外,在行: 長ROWID = dataBase.insert(NAME_OF_TABLE,空

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) { 

    } 
} 

我對數據庫的寫數據的方法,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 (?,?,?) 

回答

1

Group是一個關鍵字,所以如果你的表有這個列名,那可能是問題。 請參閱

group=Without group 
+0

它確實是一個問題thx的幫助..但現在我有另一個問題))).. – Vetalll

+0

我將所有GROUP更名爲GROUPPS(測試); 現在我有另一個問題(我改變了我的文章LogCat)。 但我的查詢有這一列... – Vetalll

+0

我解決了我的問題.. 問題它是一個保留關鍵字「SQLite組」。然後我在模擬器上添加了舊的DataBase .. thx爲你提供幫助。 – Vetalll

1

「的重要性=假組=無組perskey = 0r114343434343434343434343434343434343434343434343」

你必須把沒有單引號內組,就像這樣:'Without group',否則SQLite的意志認爲第二個詞是SQL查詢的一部分。

+1

我試圖改變without_group。它不起作用 – Vetalll

+0

嘗試將所有插入到數據庫的文本放在引號之間。另一種假設是SQLite根本不喜歡使用SQL關鍵字作爲列名(比如group)。 – jcxavier

+0

我解決了我的問題.. 問題它是一個保留關鍵字「SQLite組」。然後我在模擬器上添加了舊的DataBase .. thx爲你提供幫助。 – Vetalll

相關問題