1

我正在创建一个需要数据库连接的 android 应用程序,为此我使用了内置的 SQLiteDatabase 类。我的数据库是使用以下语句创建的:-

SQLiteDatabase db;
db = openOrCreateDatabase("ContactsMain",SQLiteDatabase.CREATE_IF_NECESSARY,null);
db.execSQL("Create Table Contacts (name Text, phno Text PRIMARY KEY, important Integer)");

'important' 的值为 0 或 1,取决于联系人是否重要。要更新此值,我使用以下代码:

protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    c.moveToPosition(position);
    String ph = c.getString(c.getColumnIndex("phno"));
    ContentValues val = new ContentValues();
    val.put("important",1);
    String query = "update Contacts set important = 1 where phno=" + ph + ";";
    db.update("Contacts", val, query, null);
    c.close();
    db.close();
}       

db 和 c 已被初始化如下:

SQLiteDatabase db = openOrCreateDatabase("ContactsMain",SQLiteDatabase.CREATE_IF_NECESSARY,null);
Cursor c = db.rawQuery("SELECT * FROM Contacts",null);    

问题是,当我单击列表中的一个项目时,所有联系人的“重要”值都设置为 1,而不仅仅是选定的那个。有人可以帮我吗?

4

2 回答 2

1

这对你有用

protected void onListItemClick(ListView l, View v, int position, long id) {
   super.onListItemClick(l, v, position, id);


  c.moveToPosition(position);
  String ph = c.getString(c.getColumnIndex("phno"));

  String where = "phno=?";
  String[] whereArgs = new String[] {ph};    

  ContentValues val = new ContentValues();
  val.put("important",1);

  db.update(DATABASE_TABLE, val, where, whereArgs);
  c.close();
  db.close();

}       
于 2012-11-14T05:54:58.273 回答
0

你要

ContentValues val = new ContentValues();
val.put("important", 1);
db.update("Contacts", val, "phno=?", new String[] {ph});
于 2012-11-14T05:57:10.780 回答