带有SQL SELECT语句和类似子句的Java PreparedStatement例子

・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参数中。

Xn_warm profile image