0

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

例如,

SELECT ID, NAME FROM PERSON
4

3 回答 3

1

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

在 javadoc 中java.sql.PreparedStatement说:

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

于 2013-09-09T15:59:36.987 回答
1

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

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

于 2013-09-09T15:52:54.890 回答
0

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

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

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

PreparedStatement因此,如果您需要添加 where 条件,通过使用您将做最小的更改。

反之,使用Statement,记录或打印 sql 查询很容易,但如果 PreparedStatement使用,记录或打印 sql 语句相当困难,或者没有直接的方法可用。

于 2013-09-09T16:39:35.587 回答