2014-01-12 23 views
0

我想在Android中的SQLiteDatabase中查詢一個表,其中一個字段位於整數列表中。有沒有使用查詢功能來做到這一點?我嘗試了下面的代碼,沒有運氣,其中generatePlayerIdList(players)返回一個逗號分隔的玩家ID列表(例如「0,1,2」)。通過Android上SQLiteDatabase中的整數列表查詢

readableDatabase.query(
      "player_position", 
      new String[]{"id", "player_id", "turn_number", "position"}, 
      "player_id IN (?)", 
      new String[]{generatePlayerIdList(players)}, 
      null, 
      null, 
      null); 

我已經成功地得到查詢用下面的代碼的工作,但是這是醜陋的,當我在其他文件中由於量表和列名(這裏沒有顯示的readabilities緣故)正在拉字符串連接。

readableDatabase.rawQuery(
      "SELECT id, player_id, turn_number, position " + 
        "FROM player_position " + 
        "WHERE player_id IN(" + generatePlayerIdList(players) + ")", 
      null); 
+1

你指的是什麼級聯?我的意思是,從我的角度來看,與第一個建議相比,您的第二個建議應該是更好的性能。 –

+0

遵循這裏的建議http://developer.android.com/training/basics/data-storage/databases.html#DefineContract後者的查詢變得像這樣: 「SELECT」+ PlayerPosition.ID +「,」+ PlayerPosition .PLAYER_ID +「,」+ PlayerPosition.TURN_NUMBER + ... 使用這些常量使用查詢方法會更好。 – kentsurrey

+0

SQLite綁定只能用文字來完成,而不能用於提供參數列表。除非你想要逗號分隔的問號參數,這將涉及更多的連接,沒有任何好處,你應該繼續使用你當前的解決方案。如果你想保持清潔,你可以使用字符串格式。 – corsair992

回答

0

在Android數據庫API,參數(?)僅用於使字符串值到數據庫中是有用的。

處理多個號碼它插入他們直接進入該字符串的最簡單方法:

db.query("player_position", 
     new String[]{"id", "player_id", "turn_number", "position"}, 
     "player_id IN (" + generatePlayerIdList(players) + ")", 
     null, null, null, null); 
+0

謝謝,這比我的信號解決方案要乾淨得多。 – kentsurrey