在JDBC中的QUERY WHERE子句中指定变量名称

时间:2010-04-09 14:46:50

标签: java mysql jdbc

有人可以给我一个关于如何在JDBC中创建查询的链接,该查询在WHERE语句中获取变量名,或者编写一个示例,更具体一点,我的代码看起来像这样:

      private String getLastModified(String url) {
     String lastModified = null;
     ResultSet resultSet;
String query = "select LastModified from CacheTable where " + 
     " URL.equals(url)";
     try {
      resultSet = sqlStatement.executeQuery(query);
}

现在我需要一种语法,使我能够返回一个ResultSet对象,其中cacheTable中的URL等于方法参数中的url。

感谢

3 个答案:

答案 0 :(得分:14)

最简单的方法是

String query = "select LastModified from CacheTable where url = '" + url +"'";

您应该使用绑定变量:

String query = "select LastModified from CacheTable where url = ?";
prepStmt = conn.prepareStatement(query);
prepStmt.setString(1, url);
rs = prepStmt.executeQuery();

答案 1 :(得分:1)

为了更进一步,你应该真正使用apache-commons或DBUtils框架中的Sping JDBC。由于涉及的步骤数量众多,许多JDBC工作都是平凡且容易出错的。这两个链接都有适合您入门的工作示例。

这些助手库将让您的生活更加舒适:-)。

答案 2 :(得分:1)

清除误解:JDBC和SQL是两个完全不同的东西。数据库只能理解SQL语言。这是一个(半)标准,你可以学习here。 JDBC只是一个Java API,它使您能够使用Java代码执行SQL语言。没有更少,仅此而已。 JDBC不是一种编写SQL语言的Java方式。它只是Java代码和数据库之间的 messenger 。您可以学习JDBC here

那就是说,是的,PreparedStatement是在SQL查询中设置值的方法。它不仅可以使用setXXX()方法轻松地在SQL字符串中设置值得满足的Java对象,而且还可以避免SQL injection次攻击。