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

「重要」には、連絡先が重要かどうかに基づいて、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 に答える