当前位置: 首页 > 面试题库 >

能否将PreparedStatement.addBatch()用于SELECT查询?

江坚成
2023-03-14
问题内容

想象一下,我有100个SELECT查询,它们的一个输入不同。该值可以使用PreparedStatement。

我在网上看到的所有文档都是用于批量插入/更新/删除的。我从未见过用于select语句的批处理。

能做到吗?如果是这样,请在下面的示例代码时为我提供帮助。

我想可以使用“ IN”子句完成此操作,但我更喜欢使用批处理选择语句。

样例代码:

公共无效运行(连接db_conn,列表value_list){
    字符串sql =“ SELECT * FROM DATA_TABLE WHERE ATTR =?”;
    PreparedStatement pstmt = db_conn.prepareStatement(sql);
    对于(字符串值:value_list){
        pstmt.clearParameters();
        pstmt.setObject(1,value);
        pstmt.addBatch();
    }
    //我在这里叫什么?
    int [] result_array = pstmt.executeBatch()
    同时(pstmt.getMoreResults()){
        ResultSet result_set = pstmt.getResultSet();
        //在这里工作
    }
}

我想这可能也取决于驾驶员的行为。我正在使用其JDBC驱动程序针对IBM AS / 400 DB2数据库编写查询。


问题答案:

参见Java教程:

该列表可能包含用于更新,插入或删除行的语句;并且它可能还包含DDL语句,例如CREATE TABLE和DROP
TABLE。但是,它不能包含将产生ResultSet对象的语句,例如SELECT语句。换句话说,列表只能包含产生更新计数的语句。

该列表在创建时与Statement对象相关联,最初是空的。您可以使用方法addBatch将SQL命令添加到此列表。



 类似资料:
  • 问题内容: 我需要检查(从同一张表)基于日期时间的两个事件之间是否存在关联。 一组数据将包含某些事件的结束日期时间,另一组数据将包含其他事件的开始日期时间。 如果第一个事件在第二个事件之前完成,那么我想将它们链接起来。 到目前为止,我有: 然后我加入他们: 然后,可以基于我的validation_check字段运行带有SELECT嵌套的UPDATE查询吗? 问题答案: 您实际上可以通过以下两种方式

  • 问题内容: 好吧,我是SQL的新手,我刚刚读到,存储过程始终返回一个值,确定该过程中的查询是否已成功执行是一种很好的做法。 所以我有一个带有select语句的简单存储过程,如果要执行,我想返回1,否则返回-1。 您能告诉我如何用SQL编写该条件吗? 如果有关系,我的数据库是MS SQL Server。 谢谢你。 问题答案: 使用输出参数返回成功状态以及Try..Catch块

  • 问题内容: 假设我有一个包含以下各列的表“ shares”: 我想运行等效的SQL语句,如下所示: 我最接近的是: 我在sqlalchemy中设置’sum(quantity)as num’时遇到麻烦。看来我需要使用alias(),但是我无法通过查看文档来弄清楚该怎么做。如果有人可以告诉我该怎么做,我将不胜感激。 非常感谢! 问题答案: 您实际上需要该方法。

  • 问题内容: 谁能指出如何检查选择查询是否返回非空结果集? 例如,我有下一个查询: 我应该像下一个那样做吗: 测试结果集是否不为空? 问题答案: 使用@@ ROWCOUNT: 根据SQL Server联机丛书: 返回受最后一条语句影响的行数。如果行数超过20亿,请使用ROWCOUNT_BIG。

  • select 数据库查询select($table, $columns, $where) table [string] 表名. columns [string/array] 要查询的字段名. where (optional) [array] 查询的条件.select($table, $join, $columns, $where) table [string] 表名. join [array] 多