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
非常麻烦
有没有其他方法可以执行一个包含多个语句的查询
# 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 楼答案
这应该不会很麻烦,您已经通过让查询包含
;
字符来完成了,这自然会终止SQL查询所以你必须做:
只要将
println
替换为用于执行sql查询的任何机制即可