【发布时间】:2014-12-16 12:04:11
【问题描述】:
我正在使用 Java (JDBC) 创建用于执行 SQL 语句的命令行实用程序。脚本被定义为一个文本文件,有许多查询。每个查询由查询分隔符 (";") 分隔。输出被路由到标准输出。
SELECT * FROM table1;
UPDATE table1 SET field1='' WHERE field2='';
SELECT * FROM table1;
INSERT INTO table1 VALUES(...)
SELECT * FROM table1;
由于 JDBC 可以批量执行语句,只有当它们不返回 ResultSet 时,我需要另一种方法。
截至目前,我会读取带有查询的脚本文件,用分隔符拆分它们,然后分析每个查询,无论是“SELECT”查询,还是“INSERT”、“UPDATE”、“DELETE”查询.之后,我会在它自己的语句中执行每个查询。返回的那些被写入标准输出,操作数据库的查询被执行。而且,我当然会保留文件中查询的顺序。
我的问题是:如果文件中的某个查询出错,我无法回滚,因为每个查询都是单独执行的。我该如何处理这个问题?
【问题讨论】:
-
如果你愿意分享你的代码,我们很容易理解
-
目前正在寻找一种方法来实现这一点。我认为这段代码是我正在寻找的:stackoverflow.com/a/1497614/1188357
-
在end语句中以字符串方式执行,单独的方法执行查询,并为有效行设置标志
标签: java mysql sql jdbc informix