我有这段代码,带有准备好的语句。我知道查询是多余的。参数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
我想知道为什么驱动程序忽略了第二段代码中的空格,但在第一部分有问题。