Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中批量执行一组“select count(*)查询?_Java_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

如何在Java中批量执行一组“select count(*)查询?

如何在Java中批量执行一组“select count(*)查询?,java,sql,sql-server,sql-server-2008,Java,Sql,Sql Server,Sql Server 2008,编辑:除了戈登的答案 虽然我们可以批量执行一组insert/update语句,但对于select语句没有这样的规定。我知道这是不可能的,因为它们返回的结果可能有很多列 但是,从表_name中选择COUNT*只返回一个值,这是一个整数。有没有办法将一组这样的查询作为批处理运行,并将结果作为int数组检索 我的特殊要求是对同一数据库上的一组表运行这些查询,然后对更多数据库重复这些查询。考虑这个例子: String[] queries = {"SELECT COUNT(*) FROM tabl

编辑:除了戈登的答案

虽然我们可以批量执行一组insert/update语句,但对于select语句没有这样的规定。我知道这是不可能的,因为它们返回的结果可能有很多列

但是,从表_name中选择COUNT*只返回一个值,这是一个整数。有没有办法将一组这样的查询作为批处理运行,并将结果作为int数组检索

我的特殊要求是对同一数据库上的一组表运行这些查询,然后对更多数据库重复这些查询。考虑这个例子:

    String[] queries = {"SELECT COUNT(*) FROM table1",
                        "SELECT COUNT(*) FROM table2",
                        "SELECT COUNT(*) FROM table3" };
    Statement st = connection.createStatement();
    for(String q: queries){            
           st.addBatch(q);
    }       
    st.executeBatch();
在本例中,executeBatch命令将只返回受影响的行数,我认为在本例中,每条语句的行数都为零

考虑到它们每个只返回一个值,有没有办法生成一批这样的语句?有解决办法吗

具体要求如下

SQL过程是毫无疑问的,因为我必须在许多不同的数据库上执行此操作,并且除了读取它们之外,我没有任何访问权限。我的意思是,我可以在那里存储过程,但我被告知不要以任何方式修改数据库,而只是从中读取。此外,数据库的数量以后可能会增加,我不会在那里安装这些过程,所以我不希望这种依赖关系使这个解决方案真正灵活


我正在使用Java和SQL Server 2008构建一个网页,该网页从各种数据库上的一组表中获取计数值并显示它们。

为什么不只运行一个查询?你可以:

select (SELECT COUNT(*) FROM table1) as table1cnt,
       (SELECT COUNT(*) FROM table2) as table2cnt,
       (SELECT COUNT(*) FROM table3) as table3cnt;
您也可以每行返回一个值,但需要一个附加列来标识表:

select which, cnt
from ((SELECT 'table1' as which, COUNT(*) as cnt FROM table1) union all
      (SELECT 'table2' as which, COUNT(*) as cnt FROM table2) union all
      (SELECT 'table3' as which, COUNT(*) as cnt FROM table3)
     ) t

我认为联合查询可以简化:您不需要外部select语句。@ThomasMueller。这是真的。