編輯: 我找到了一個解決方案。顯然,如果我把「_id」作爲nullColumnHack in db.insertAndroid - SQLite整數主鍵不被添加
dbSave.insert(db.getTable(), "_id", values);
然後它就起作用了。有人可以解釋爲什麼嗎?
我在我的應用程序中有一個數據庫。文本字段工作得很好,我可以寫和檢索他們沒有問題。但是,我的ID列是一個「整數主鍵」不會被添加到數據庫中。
這裏是我的DBHelper的onCreate
public void onCreate(SQLiteDatabase db) {
String CREATE_PASS_TABLE = "CREATE TABLE " + TABLE_PASS + "("
+ KEY_ID + " INTEGER PRIMARY KEY, " + KEY_USE + " TEXT,"
+ KEY_PASS + " TEXT" + ")";
db.execSQL(CREATE_PASS_TABLE);
}
獨立的類,在那裏我將值添加到DB:
private void saveToDB() {
SQLiteDatabase dbSave = db.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(db.getKeyUse(), edtUse.getText().toString());
values.put(db.getKeyPass(), edtPassToSave.getText().toString());
dbSave.insert(db.getTable(), null, values);
dbSave.close();
dialog.dismiss();
}
,這是我檢索記錄。
private List<Passwords> getPasswords() {
List<Passwords> passwordList = new ArrayList<Passwords>();
String selectQuery = "SELECT * FROM " + dbHelp.getTable();
SQLiteDatabase db = dbHelp.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Passwords password = new Passwords();
Toast.makeText(getApplicationContext(), cursor.getString(0), Toast.LENGTH_SHORT).show();
//password.setId(Integer.parseInt(cursor.getString(0)));
password.setUse(cursor.getString(1));
password.setPass(cursor.getString(2));
passwordList.add(password);
} while (cursor.moveToNext());
}
return passwordList;
}
但是,當我嘗試獲取ID並將其解析爲一個int我得到一個nullPointerException。當我用Toast檢查ID值時,每一個都是空白的。發生了什麼,如何解決?
logcat的日誌和地步,你得到錯誤... – Selvin