有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将多个语句作为一个语句执行查询?

我绕过了一个障碍。以下语句不执行,因为String query包含多个语句

String query="create volatile table test1 as (etc . ); select TOP 10 * from test1; ";

        String driver = "com.xxx";
        String conUrl="jdbc:ccc";
        Class.forName(driver);
        Connection conn = DriverManager.getConnection(conUrl,user,password);

        PreparedStatement stmt=conn.prepareStatement(query);

最后一行抛出一个错误Data definition not valid unless solitary

将查询拆分为多个PreparedStatements非常麻烦

有没有其他方法可以执行一个包含多个语句的查询


共 (2) 个答案

  1. # 1 楼答案

    您可以使用JDBC批处理(addBatch,executeBatch),它允许您“堆叠”语句,并将它们全部发送到db引擎,以便一次执行

    这里有一个起点:http://viralpatel.net/blogs/batch-insert-in-java-jdbc/

    但您仍然需要将其拆分为单独的语句,并一次添加一个语句Java: splitting a comma-separated string but ignoring commas in quotes

    而且,正如@CHEBURASHKA所指出的,它只返回受每条语句影响的行数——如果您想从表中请求实际数据,这是不好的

  2. # 2 楼答案

    这应该不会很麻烦,您已经通过让查询包含;字符来完成了,这自然会终止SQL查询

    所以你必须做:

    Stream.of(query.split(";")).forEach(sqlStatement -> System.out.println(sqlStatement))
    

    只要将println替换为用于执行sql查询的任何机制即可