【发布时间】:2017-06-13 20:18:52
【问题描述】:
如何在下面代码的参数中使用 %?如果我只是在没有 rset.setString() 的查询中直接使用它,它就可以工作。谢谢!
try (Connection con = DriverManager.getConnection(connection);
PreparedStatement prepstmt = con.prepareStatement("SELECT {fn SUBSTRING(VS_TABLE_KEY,3,18)} FROM VP_SD_TABLE WHERE {fn SUBSTRING(VS_DESCRIPT,3,62)} LIKE ?");
ResultSet rset = prepstmt.executeQuery()
) {
prepstmt.setString(1,"DI%");
while (rset.next()) {
System.out.println(rset.getString("VS_TABLE_KEY"));
}
} catch (SQLException e) {
e.printStackTrace();
System.exit(1);
}
【问题讨论】:
-
您尝试该代码时发生了什么?
-
不返回任何结果
-
您需要为
substring()表达式提供一个别名。您的结果集没有列名VS_TABLE_KEY -
所以您认为别名使其无法正常工作?如果我使用它,它会按原样工作。 "选择 {fn SUBSTRING(VS_TABLE_KEY,3,18)} 从 VP_SD_TABLE WHERE {fn SUBSTRING(VS_DESCRIPT,3,62)} LIKE 'DI%'"
-
不要将查询作为 try-with-resources 的一部分执行。创建结果集但不要在那里运行
executeQuery()。 setString 那样没有效果。
标签: java jdbc prepared-statement