如果我在查询中没有WHERE子句,那么我应该使用Statement还是PreparedStatement。哪一个会有效率。
对于Ex,
SELECT ID, NAME FROM PERSON
答案 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语句非常困难,或者没有直接的方法可用。