0

rawQuery文字列を実行していますが、SQliteはこの警告をスローします:

SQLiteDirectCursorDriver(1058):;で終わるSQL文字列が見つかりました

見積もりの​​問題のため。したがって、次のように、値による実際の置換がないクエリでSelectionArgsを使用しようとしています。

String query = "SELECT Min(?) as oldest, Max(?) as newest, COUNT(?) as nb_data FROM ? WHERE ? BETWEEN (SELECT Min(?) FROM ?) AND (SELECT Max(?) FROM ?)";
String[] values = new String[] { TS, TS, col_2, table, TS, TS, table, TS, table };
Cursor mCount = database.rawQuery(query, values);

実際には値の置換要件ではなくプレースホルダーがあるため、(クエリの「WHERE」部分でのみ)SelectionArgs文字列を少なくしても機能しません。

SQLiteDirectCursorDriverの警告が表示されないように、このプリペアドステートメントを設定する(引用符を使用したり元のクエリを書き換えたりするのではなく、プレースホルダーを使用する)解決策はありますか?

4

1 に答える 1

0

パラメータは式にのみ使用でき、識別子には使用できません。

この警告を防ぐには、SQLクエリ文字列の末尾からセミコロンを省略します。

于 2012-09-12T16:08:32.743 に答える