2013-10-30 39 views
2

我的问题是插入数值到数据库后插入我想立即从该表中获取值,但我得到了异常。如何在插入数据库时​​立即检索插入的值

我的代码是这样的:

//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

显示的代码插入到表... –

+0

@PankajKumar看我的后期编辑... – Arut

回答

3

SQLite的insert()返回新插入的行的行号,或-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; 
} 
+0

谢谢为您的答案,我会尝试这一个.. – Arut

+0

我使用arraylist插入价值数据库。 – Arut

+0

但是你只插入一个值到DB –