2017-05-29 7 views
-3

を使用せずに、SQLiteのDBから単一の行を取得します。次のコードは、私のIDを使用して単一行与えID

public DataObject getContact(int id) { 
     SQLiteDatabase db = this.getReadableDatabase(); 

     Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID, 
         KEY_PHN, KEY_PTYPE, KEY_PDATE ,KEY_PNAME, KEY_PNOTE }, KEY_ID + "=?", 
       new String[] { String.valueOf(id) }, null, null, null, null); 

     if (cursor != null) cursor.moveToFirst(); 

     DataObject contact = new DataObject(Integer.parseInt(cursor.getString(0)),cursor.getString(1), 
       cursor.getString(2), cursor.getString(3),cursor.getString(4),cursor.getString(5)); 

     cursor.close(); 

     return contact; 
} 

を私がしたいことなどのために、文字列を使用している:私のデータベースは以下の通りであれば、その後、私は、全体の行を取得したい、私はNAME2を言うとき(つまり、アドレス2とphno2を返す必要があります意味)

  1. 名1アドレス1 phnno1
  2. name2のアドレス2 phnno2
  3. NAME3アドレス3 phnno3
  4. 名前4アドレス4 phnno4
+1

として「NAME2」で一つだけの行があることを確認してくださいする必要があります: あなたは行うことができます! –

+1

クエリは、条件に一致するすべての行を返します。ある行を取得する唯一の方法はPKではありませんが、どこかで一意の制約がある場合でもこれは可能です。そうでない場合は、最初のものを取るだけです...あなたが望むものとは必ずしも同じではありません – AxelH

+1

'KEY_ID +" =? "'ではなく 'KEY_PNAME +" =? "'についてはどうでしょうか? – Denny

答えて

0

あなたの例を使用して回答を作成します。

Cursor cursorTable = db.query(CONTACTS, 
      new String[]{NAME, ADDRESS, PHNNO}, 
      NAME + "= ?", 
      new String[]{"name2"}, 
      null, 
      null, 
      null); 

をしかし、あなたは、これはname2の情報だけを返すようにしたい場合は、あなたがそれに応じてwhere句を変更することができますNAME

関連する問題