没有where的jdbc语句或PreparedStatement

时间:2013-09-09 14:54:18

标签: jdbc

如果我在查询中没有WHERE子句,那么我应该使用Statement还是PreparedStatement。哪一个会有效率。

对于Ex,

SELECT ID, NAME FROM PERSON

3 个答案:

答案 0 :(得分:1)

预编译准备好的声明以提高效率。此外,数据库还缓存了在以后执行时获得性能的语句。即使您的语句中没有变量,两者都可以使用。特别是如果声明经常执行。

如果执行一次或很少我会说正常Statement是好的。否则我会使用PreparedStatement。但如果没有基准测试,就没有办法确定它。

答案 1 :(得分:1)

取决于JDBC驱动程序的实现。无论是java.sql.Statement还是java.sql.PreparedStatement的实例,某些供应商都会将该语句保存在缓存中。为简单起见,您可以使用java.sql.Statement。另一方面,如果您计划多次添加参数并执行该语句(在同一连接中),则使用java.sql.PreparedStatement的实例。

java.sql.PreparedStatement的javadoc中说:

  

然后可以使用此对象多次有效地执行此语句。

答案 2 :(得分:0)

除了stonedsquirrel提到的内容之外,如果您想要添加where条件然后很容易进行更改,将来还有另外一点,您需要在代码中添加以下内容

PreparedStatement ps = con.prepareStatement("SELECT ID, NAME FROM PERSON WHERE NAME= ?"); 
ps.setString(1, getName(""));
....
...

但是,如果您使用的是Statement,则需要对代码进行更多更改。

因此,如果您需要添加条件,则使用PreparedStatement进行最小的更改。

相反,通过使用Statement,可以很容易地记录或打印sql查询,但是如果 使用PreparedStatement,记录或打印sql语句非常困难,或者没有直接的方法可用。