簡體   English   中英

如何將多個語句的查詢作為一個執行?

[英]How to execute query of multiple statements as one?

我遇到了一個障礙。 以下語句不會執行,因為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非常麻煩

有沒有其他方法來執行包含多個語句的查詢作為一個?

您可以使用JDBC批處理(addBatch,executeBatch),它允許您“堆棧”語句並將它們全部發送到db引擎以立即執行。

這是一個起點: http//viralpatel.net/blogs/batch-insert-in-java-jdbc/

但是您仍然需要將其拆分為單獨的語句,並一次添加一個。 Java:拆分以逗號分隔的字符串,但忽略引號中的逗號

而且,正如@CHEBURASHKA指出的那樣,它只返回受每個語句影響的行數 - 如果你想從表中請求實際數據,那就不好了。

它不應該是繁瑣的,你已經通過讓你的查詢包含; 字符,自然終止SQL查詢。

所以你必須這樣做:

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

只需將println替換為用於執行sql查詢的任何機制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM