带有SQL SELECT语句和类似子句的Java PreparedStatement例子
Xn_warm
・2 分钟阅读
java/jdbc常见问题解答:可以使用SQL SELECT
语句和LIKE
子句共享一个PreparedStatement
示例?
当然,以下是如何使用一个SQL preparedStatement查询数据库的一个例子,根据要求,它使用带有LIKE
子句的SQL SELECT
语句。
对于我来说,这个例子的难点是找出如何在PreparedStatement
参数中使用通配符,我尝试直接将它添加到SQL SELECT语句中,然后只需要在ps.setString()语句中使用?字符。
下面是一个例子Java方法,它展示了这个PreparedStatement/SELECT/LIKE组合。
private List getTopics (Connection conn, String searchCriteria) throws SQLException { List blogs = new LinkedList(); String query =\"SELECT id, text FROM blogs WHERE UPPER(text) LIKE ?\"; try { // going to do a search using\"upper\" searchCriteria = searchCriteria.toUpperCase(); // create the preparedstatement and add the criteria PreparedStatement ps = conn.prepareStatement(query); ps.setString(1,\"%\" + searchCriteria +\"%\"); // process the results ResultSet rs = ps.executeQuery(); while ( rs.next() ) { Blog blog = new Blog(); blog.setID ( rs.getInt(\"id\") ); blog.setText( rs.getString(\"text\") ); blogs.add(blog); } rs.close(); ps.close(); } catch (SQLException se) { // log exception; throw se; } return blogs; }
正如你所看到的,非常类似于PreparedStatement,UPDATE或DELETE,但是在SQL SELECT语句中处理的结果是ResultSet ,如上所述,诀窍是确保你的String只是说LIKE,然后将你需要的通配符(即%字符)添加到PreparedStatement参数中。