2013-01-11 87 views
0

我正在使用以下內容,其中AuthorName列值是我想要在AuthorID的基礎上找到的。 catid是包含AuthorID如何從android中的數組中查詢sqlite數據庫

public Cursor Authorname(String[] catid) { 
    myDataBase.rawQuery("SELECT AuthorName FROM AUTHOR_NAME WHERE AuthorID = ?",catid); 
} 

陣列,但它返回IllegalArgumentException。任何人都可以幫我縮短這一點。提前致謝。

+0

請問您可以發佈logcat輸出嗎? –

+0

yaa ... jst amoment – user1934547

+0

java.lang.IllegalArgumentException:由於索引超出範圍,無法在索引138處綁定參數。該語句有1個參數。 – user1934547

回答

3

您只能使用一個查詢來獲取所有用戶。這是一個例子。

private static final String QUERY = "SELECT AuthorName FROM AUTHOR_NAME WHERE AuthorID IN %ids"; 

public Cursor Authorname(String[] catid) { 

    // Build the string with all the IDs, e.g. "(1,2,3,4)" 
    StringBuilder ids = new StringBuilder(); 
    ids.append("("); 
    for(int i = 0; i < catid.length; i++) { 
     ids.append(String.valueOf(catid[i]); 
     if (i < catid.length - 1) { 
      ids.append(","); 
     } 
    } 
    ids.append(")"); 

    // Use the string with the ids in the query 
    String finalQuery = QUERY.replaceAll("%ids", ids.toString()); 

    // Execute the query 
    return myDataBase.rawQuery(finalQuery); 
} 
+0

thk先生,我想這個在我的代碼 – user1934547

+0

實現你不需要引用這些字符串? (如果它們不是'String'那麼爲什麼要將它們傳遞爲'String []'?) – trojanfoe

+0

no ...也在這裏我得到了相同的錯誤 – user1934547

-3

更改查詢

myDataBase.rawQuery("SELECT AuthorName FROM AUTHOR_NAME WHERE AuthorID = ?",catid); 

如下

cursor = myDataBase.query("AUTHOR_NAME", 
        new String[] {"AuthorName"}, "AuthorID IN(?)", catid, null, null, null); 

試試上面的解決方案希望它爲你工作。

+0

這隻適用於2 ... – m0skit0

+0

okkk ... thnks求救...我試圖實現這個 – user1934547

+0

但該數組是動態 – user1934547

相關問題