2

私の問題は、挿入後に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();
}
}

私のDBコード:

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

良いかどうかはわかりません。

誰でもこれを行うための提案をしてください...

4

1 に答える 1

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; 
}
于 2013-10-30T07:13:11.793 に答える