我的问题是在插入后向DB插入值时我想立即从该表中获取值,但我得到了例外。
我的代码就像:
//insert values to DB
button.setOnClickListener(new onClickListner()) {
public void onclick() {
mDbHandler.addMedicinesDetails(new MedicineList(mName, barcode_value,dosage_per_day,
days, notes));
//Retrieve value from DB
mMedicineList= mDbHandler.getMedicineId(mName,barcode_value,dosage_per_day,days,notes);
long medicineid = mMedicineList.get(0).getId();
Toast.makeText(getApplicationContext(), ""+mMedicineList, Toast.LENGTH_SHORT).show();
}
}
我的数据库代码:
public void addMedicinesDetails(MedicineList medicineList) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(MEDICINENAME, medicineList.getMedicineName());
values.put(BARCODE, medicineList.getBarcodeValue());
values.put(DOSAGEPERDAY, medicineList.getDosage_per_day());
values.put(DAY, medicineList.getDays());
values.put(NOTES, medicineList.getNotes());
db.insert(TABLENAME, null, values);
db.close();
}
我不知道它是好还是不好。
请有人提出建议吗......
答案 0 :(得分:3)
SQLite insert()返回新插入行的行ID,如果发生错误,则返回-1。
那么为什么不修改你的addMedicinesDetails()
来返回插入的id。如下例
long newRowId = db.insert(
FeedEntry.TABLE_NAME,
FeedEntry.COLUMN_NAME_NULLABLE,
values);
return newRowId
查看修改后,您的代码应为
public long addMedicinesDetails(MedicineList medicineList) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(MEDICINENAME, medicineList.getMedicineName());
values.put(BARCODE, medicineList.getBarcodeValue());
values.put(DOSAGEPERDAY, medicineList.getDosage_per_day());
values.put(DAY, medicineList.getDays());
values.put(NOTES, medicineList.getNotes());
long id = db.insert(TABLENAME, null, values);
db.close();
return id;
}