0

次のような呼び出しから生成される生のクエリ文字列を取得する方法はありますか? 私はどのように「?」を理解しようとしています。プレースホルダーが入力されます。

    Cursor cursor = database.query(
            adapter.getTable(),           // The table to query  - String
            adapter.getColumns(),         // The columns to return - String[]
            adapter.getWhereClause(),     // The columns for the WHERE clause - String
            adapter.getWhereClauseArgs(), // The values for the WHERE clause - String[]
            null,                         // Group by - String
            null,                         // Groups having - String
            adapter.getSortBy(),          // The sort order - String
            adapter.getLimit());          // The limit - String

操作の順序が気になります。たとえば、上記のクエリが、以下の whereClause 引数を使用して以下の select に変換された場合、result1 または result2 を取得できますか? かっこ内のステートメントが最初に実行される数学の演算の順序のように機能しますか? または、文字列内の「?」の位置に厳密に依存しています。

    String select = "SELECT * FROM table1 WHERE someField = ? AND _id in(SELECT _id FROM table2 WHERE status = ?)";

    String[] args = new String[]{ "blue", "active" };

    String result1 = "SELECT * FROM table1 WHERE someField = 'blue' AND _id in(SELECT _id FROM table2 WHERE status = 'active')";

    String result2 = "SELECT * FROM table1 WHERE someField = 'active' AND _id in(SELECT _id FROM table2 WHERE status = 'blue')";
4

1 に答える 1

1

簡単なテストでは、操作の順序の概念なしで、文字列内の位置によって選択引数が置換されることが示されます。

于 2013-06-08T05:21:07.293 に答える