我一直在尝试弄清楚为什么以下代码没有生成任何ResultSet数据:
String sql = "SELECT STUDENT FROM SCHOOL WHERE SCHOOL = ? ";
PreparedStatement prepStmt = conn.prepareStatement(sql);
prepStmt.setString(1, "Waterloo");
ResultSet rs = prepStmt.executeQuery();
另一方面,以下内容可以正常运行:
String sql = "SELECT STUDENT FROM SCHOOL WHERE SCHOOL = 'Waterloo' ";
PreparedStatement prepStmt = conn.prepareStatement(sql);
ResultSet rs = prepStmt.executeQuery();
SCHOOL的数据类型为CHAR(9个字节)。除了setString之外,我还尝试过:
String sql = "SELECT STUDENT FROM SCHOOL WHERE SCHOOL = ? ";
PreparedStatement prepStmt = conn.prepareStatement(sql);
String school = "Waterloo";
Reader reader = new CharArrayReader(school.toCharArray());
prepStmt.setCharacterStream(1, reader, 9);
prepStmt.setString(1, "Waterloo");
ResultSet rs = prepStmt.executeQuery();
我完全不知道接下来应该调查什么;Eclipse 调试器显示 SQL 查询在 setString 或 setCharacterStream 之后没有变化。我不确定是因为设置参数不起作用,还是调试器不能捕捉 PreparedStatement 的更改。
非常感谢任何帮助!谢谢!
?
)但将参数设置为带有尾随空格的"Waterloo "
。MySQL应忽略尾随空格,但也许驱动程序在这种情况下正在进行某些奇怪的操作。 - Jim Garrison