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

有人可以给我一个关于如何在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。

谢谢

最简单的方法是

 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(); 

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

这些帮助库将使您的生活更舒适:-)。

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

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