[英]How to execute DELETE and SELECT statements as one query with JPA?
[英]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.