準備済みのステートメントにはinvalid column index
が表示されます。
は、ここに私のコードPrepareステートメントで無効な列インデックスエラー
// Excluding some unnecessary code
counter = 1;
if (rsTableNames.next())
{
// Creating Query for prepared statement
String getCode = "select * from (select c_name from "
+ rsTableNames.getString(1)+ " where lower(c_name) like ?%'";
while (rsTableNames.next())
{
getCode += " union select c_name from " +
rsTableNames.getString(1)+ " where lower(c_name) like ?%'";
counter++;
}
getCode += ") where rownum <= " + maxRecords;
// Now The getCode contains 3 place holders ie ?
pst = con.prepareStatement(getCode);
String param = "'" + query.toLowerCase();
for(int i=1;i<=counter;i++)
{
pst.setString(i,param); // when i=3 exception is thrown
}
}
クエリは3つのプレースホルダが含まれているもののi
が3
になったとき、私は例外を取得しています。
EDIT(HINT):私は問題が'
の混乱を招いていると思います。どうすればそれを逃れることができますか?
〜アジンカ。
感謝を必ず各近いがあることを確認してください。私はそれを試みたが、それはエラーを削除したが、間違ったクエリを作成します。私は '' 'が' like'節に必要であると思います。私は '' 'を避けなければならないと思うが、どうすればよいか分からない。 – xyz
@Ajinkya「間違ったクエリ」とはどういう意味ですか?あなたが得ようとしているものと結果について何を得ているのかの例を挙げてください。 –
@John: '.. where like query%'(これは必須の 'like'節から' ''を削除します)を使ってクエリを作成しますので、データベースにいくつかのレコードがあるので結果はゼロになります。 '.. like like 'query%''と似ています。 – xyz