数据库未更新

Database is not updated

我写的像接触。我添加了人们的信息(姓名,phone,邮件),我可以在 listView 中看到他们。被添加的人列表,有特定的 ID 号。我想使用身份证号码更新他们的信息。但是信息没有更新。他们还是老版本。

这些是 DbHelper 中更新和读取信息的方法:

public List<Kontak> kisiOku(){
    SQLiteDatabase db = this.getReadableDatabase();
    List<Kontak> list = new ArrayList<>();
    String[] kolon = {"id","isim","tel","mail"};
    Cursor c = db.query("kisi",kolon,null,null,null,null,null);
    c.moveToFirst();
    while (!c.isAfterLast()){
        int id = c.getInt(0);
        String isim = c.getString(1);
        String tel = c.getString(2);
        String mail = c.getString(3);
        Kontak k = new Kontak(isim,tel,mail);
        k.setId(id);
        list.add(k);
        c.moveToNext();
    }
    c.close();
    db.close();
    return list;
}

public void kisiDuzelt(String isim,String tel,String mail){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues val = new ContentValues();
    val.put("isim",isim);
    val.put("tel",tel);
    val.put("mail",mail);
    Kontak k = new Kontak(isim, tel, mail);
    db.update("kisi", val, "id = "+k.getId(),null);
}

使用更新方式:

public void duzelt(View v){
    String isim = editName1.getText().toString();
    String tel = editTel1.getText().toString();
    String mail = editMail1.getText().toString();
    dbHelper.kisiDuzelt(isim,tel,mail);
    new Kontak(isim,tel,mail).getId();
    Toast.makeText(getApplicationContext(),"DÜZELTİLDİ",Toast.LENGTH_LONG).show();
}

这是适配器部分:

    dbHelper = new DbHelper(this);
    list = dbHelper.kisiOku();
    adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list);
    listView.setAdapter(adapter);
Kontak k = new Kontak(isim, tel, mail);

这不会初始化您的 Kontak 对象中的 id 字段,并且 getId() 稍后 returns 任何默认值,例如 0。这与数据库中的任何内容都不匹配,并且不会更新任何行。

您必须一直传递从数据库中检索到的 ID,或者那些填充了 ID 以匹配数据库中的值的 Kontak 对象。