数据库未更新

时间:2018-02-08 20:53:22

标签: java android sqlite listview sqliteopenhelper

我写的就是联系方式。我添加了人们的信息(姓名,电话,邮件),我可以在listView中看到它们。添加列表的人员具有特定的ID号。我想使用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);

1 个答案:

答案 0 :(得分:1)

Kontak k = new Kontak(isim, tel, mail);

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

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