2017-05-29 46 views
-3

下面的代碼給我單列使用ID:獲取從一個SQLite數據庫的單個行,而無需使用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. 名2地址2 phnno2
  3. NAME3地址3 phnno3
  4. name4 address4 phnno4
+1

您可以相應地改變你的where子句! –

+1

查詢將返回與條件匹配的每一行。一個PK不是獲得一行的唯一方法,如果你在某個地方有一個唯一的約束,這仍然是可能的。如果不是,那麼你只需要第一個......不一定是你想要的那個 – AxelH

+1

那麼'KEY_PNAME +「=?」'而不是'KEY_ID +「=?」'並且將參數類型改爲String? – Denny

回答

0

我用你的例子來構建我的答案。 你可以做:

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

但是,如果你想這對名2只返回信息,你必須確保只有一個列有「NAME2」作爲名稱

相關問題