Android SQLite数据库查询

时间:2012-11-14 05:33:06

标签: android android-sqlite

我正在创建一个需要数据库连接的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,而不仅仅是所选联系人的值。有人可以帮助我吗?

2 个答案:

答案 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"));

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

}       

答案 1 :(得分:0)

你想要

ContentValues val = new ContentValues();
val.put("important", 1);
db.update("Contacts", val, "phno=?", new String[] {ph});