準備されたステートメントを含むこのコードがあります。クエリが冗長であることはわかっています。パラメータid
は文字列<space>413530
(" 413530") です。先行する空白文字に注意してください。
String query = "SELECT RSCode as id FROM Customer WHERE RSCode=?";
PreparedStatement newPrepStatement = connection
.prepareStatement(query);
newPrepStatement.setString(1, id);
resultSet1 = newPrepStatement.executeQuery();
while (resultSet1.next()) {
System.out.println("Got a result set.");
logindata.add(resultSet1.getString("id"));
}
このクエリを実行しても結果が得られません。
ここで、同じステートメントを使用して、次のようにパラメーターを文字列の一部として追加するとします。
String query = "SELECT RSCode as id FROM Customer WHERE RSCode=" + id;
PreparedStatement newPrepStatement = connection
.prepareStatement(query);
resultSet1 = newPrepStatement.executeQuery();
while (resultSet1.next()) {
System.out.println("Got a result set.");
logindata.add(resultSet1.getString("id"));
}
この準備済みステートメントを実行した後の結果が得られます。同じものでも動作しますjava.sql.statement
ドライバーがコードの 2 番目の部分で空白を無視する理由を知りたいのですが、最初の部分に問題があります。