2010-10-14 34 views
0

在我的代码的危害,我使用什么用的executeQuery而不是executeUpdate的删除行

String query= "delete all from myTable"; 
stmt.executeQuery(query); 

理想的DML的executeUpdate应改为使用。但是,executeQuery也适用。所以,很想知道使用executeQuery而不是executeUpdate会带来什么危害?

回答

1

首先,你没有得到更新的行数。

二,依赖于JDBC驱动程序,您的查询可能失败。

+0

如果我不需要知道该怎么办? – Vik 2010-10-14 09:42:31

+0

如果你坚持这样做,并且没有可观察到的不良影响,则可以使用该方法。但这样做意味着如果JDBC驱动程序得到更新(并且具有不同的方式),您还可以修改应用程序。 – nanda 2010-10-14 09:45:48

1

它不会告诉您有多少行受到影响。

它创建可疑值的ResultSet(或可能不是?)。

你确定这适用于所有数据库吗? Javadoc表示,如果“给定的SQL语句产生除单个ResultSet对象之外的任何东西”,则驱动程序可以抛出SQLException,对此,DELETE可能有资格。

如果你真的不知道,如果你要运行一个查询或DML,你可以使用execute(),它同时适用于,然后让你叫getUpdateCountgetResultSet甚至getMoreResults

+0

我不需要所有的数据库一起工作。只是oracle db – Vik 2010-10-14 09:43:10