数据库未更新
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 对象。
我写的像接触。我添加了人们的信息(姓名,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 对象。