statement.executeQuery
和之间有什么区别statement.getResultSet()
。我相信两者都会返回ResultSet
一条select语句,但是当我们应该使用它们中的哪一个时,有任何特定的标准。
通常,executeQuery
如果知道执行的是select语句,则应使用。该getResultSet()
方法本身 不会执行该语句 。
所述getResultSet
的目的是在与组合使用execute
。该execute
方法适用于未知的语句类型,或可能产生多个结果(即0或多个更新计数或结果集)的语句。
简而言之:您通常应使用executeQuery
。
一个简单的示例,execute
如果代码不知道它将执行什么查询(更新,查询或更复杂的查询),例如在执行用户提供的查询时,您应该使用它。
另一个示例是SQL Server存储过程,它可以返回多个更新计数和结果集。
处理结果的通用方法execute
是:
boolean isResultSet = statement.execute(sql);
while (true) {
if (isResultSet) {
try (ResultSet rs = statement.getResultSet()) {
// do something with result set
}
} else {
int updateCount = statement.getUpdateCount();
if (updateCount == -1) {
// -1 signals no more results
break;
}
// do something with update count
}
// move to next result
isResultSet = statement.getMoreResults();
}
这样可以确保所有*结果都得到处理。
*:此示例忽略了允许将多个异常与结果集和更新计数交错的系统(如SQL Server)的异常结果.
问题内容: 我对此方法有一个疑问:st显然是一个Statement对象。直接从这个甲骨文的Java教程: execute:如果查询返回的第一个对象是ResultSet对象,则返回true。如果查询可以返回一个或多个ResultSet对象,请使用此方法。通过重复调用Statement.getResutSet来检索从查询返回的ResultSet对象。 “ 一个或多个ResultSet对象 ” 是什么意
我不明白为什么executeQuery方法会抛出异常,我尝试在mysql上运行语句,结果正常。 这是代码: 以下是跟踪:
问题内容: 我正在执行一个简单的preparestatement查询执行,并抛出此错误:java.sql.SQLException:net.sourceforge.jtds.jdbc.JtdsPreparedStatement.notSupported的这种类型的语句不支持使用executeQuery(string)方法(net.sourceforge.jtds.jdbc.JtdsPrepared
我使用Java中的preparedStatement从MySql中的表中获取两列。如果直接在mySql DB上执行查询,则查询有效并返回行。但是对于这个方法调用,ResultSet在每个ResultSet上都有值“false”。next()调用。代码如下: 我在控制台上得到以下输出: 请帮助我如何解决此问题,并使用正确的数据获得正确的结果集。
executeQuery方法用于执行产生单个结果集的SQL语句,如SELECT语句。executeQuery方法不能执行INSERT、UPDATE、DELETE以及DDL语句,如果执行这些语句,executeQuery将抛出SQLException异常。executeQuery方法的定义如下: ResultSet executeQuery(String sql) throws SQLExcept
我正在使用tomcat、jsp和MSSQL2008,希望获得一些汇总数据,如每日、每周、每月和每年。从这里,我搜索了如何对来自MSSQL的这些摘要数据使用datapart()函数。在JSP中,我使用 在MSMS中,查询指令进行测试。 我在JSP程序中遇到了两个问题,但在MS SQL Server Management Studio中使用相同的查询可以很好地工作。 null 我的问题是: