0

AuthorNameに基づいて見つけたい列の値は次のとおりですAuthorIDcatidを含む配列です。AuthorID

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

しかし、それは戻りIllegalArgumentExceptionます。誰でもこれを短くするのを手伝ってくれますか。前もって感謝します。

4

2 に答える 2

3

すべてのユーザーを取得するために使用できるクエリは 1 つだけです。これが例です。

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);
}
于 2013-01-11T10:12:58.310 に答える
-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);

上記の解決策を試してみてください。

于 2013-01-11T10:04:58.157 に答える