如果我在查询中没有 WHERE 子句,那么我应该使用 Statement 还是 PreparedStatement。哪一个会是有效的。
例如,
SELECT ID, NAME FROM PERSON
如果我在查询中没有 WHERE 子句,那么我应该使用 Statement 还是 PreparedStatement。哪一个会是有效的。
例如,
SELECT ID, NAME FROM PERSON
取决于 JDBC 驱动程序的实现。一些供应商将该语句保存在缓存中,无论是否是java.sql.Statement
或的实例java.sql.PreparedStatement
。为简单起见,您可以使用java.sql.Statement
. 另一方面,如果您计划添加一个参数并多次执行该语句(在同一连接中),请使用java.sql.PreparedStatement
.
在 javadoc 中java.sql.PreparedStatement
说:
然后可以使用该对象多次有效地执行该语句。
预编译准备好的语句以提高效率。数据库还缓存在以后执行时获得性能的语句。即使您的语句中没有变量,两者都可以使用。特别是如果该语句经常执行。
如果执行一次或很少执行,我会说正常Statement
就可以了。否则我会使用PreparedStatement
. 但是如果没有基准测试,就无法确定它。
除了stonedsquirrel提到的之外,还有一点是将来如果您想添加where条件那么很容易进行更改,您只需在代码中添加以下内容
PreparedStatement ps = con.prepareStatement("SELECT ID, NAME FROM PERSON WHERE NAME= ?");
ps.setString(1, getName(""));
....
...
但是,如果您正在使用Statement
,则需要对代码进行更多更改。
PreparedStatement
因此,如果您需要添加 where 条件,通过使用您将做最小的更改。
反之,使用Statement
,记录或打印 sql 查询很容易,但如果
PreparedStatement
使用,记录或打印 sql 语句相当困难,或者没有直接的方法可用。