2013-10-30 83 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 –