如何在单个语句中 运行 多个查询
How to run multiple queries in single statement
这是我的SQL代码,一个简单的交易。当我 运行 它在 phpmyadmin 上时它运行良好。
START TRANSACTION;
SELECT received_money FROM bank_accounts WHERE `uuid` = "2eaef3e4-eeb6-41f7-9ecf-5d503465baba";
UPDATE bank_accounts SET received_money = 0 WHERE `uuid` = "2eaef3e4-eeb6-41f7-9ecf-5d503465baba";
COMMIT;
但我想在我的 Java 代码中直接使用此 sql 代码:
String sql = "START TRANSACTION;\n" +
"SELECT placed_money FROM bank_accounts WHERE uuid = \"" + uuid + "\";\n" +
"UPDATE bank_accounts SET placed_money = 0 WHERE uuid = \"" + uuid + "\";\n" +
"COMMIT;";
Connection connection = connect();
Statement stmt = connection.createStatement();
ResultSet resultSet = stmt.executeQuery(sql);
但每次我都会遇到这个错误
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT received_money FROM bank_accounts WHERE `uuid` = "2eaef3e4-eeb6-41f7-9ecf' at line 2
这是一个多重查询。
所以你需要一个允许这样的连接字符串
String dbUrl = "jdbc:mysql:///test?allowMultiQueries=true";
进一步删除所有 \n 并如我在评论中所说替换“
String sql = "START TRANSACTION;" +
"SELECT placed_money FROM bank_accounts WHERE uuid = '" + uuid + "';" +
"UPDATE bank_accounts SET placed_money = 0 WHERE uuid = '" + uuid + "';" +
"COMMIT;";
这是我的SQL代码,一个简单的交易。当我 运行 它在 phpmyadmin 上时它运行良好。
START TRANSACTION;
SELECT received_money FROM bank_accounts WHERE `uuid` = "2eaef3e4-eeb6-41f7-9ecf-5d503465baba";
UPDATE bank_accounts SET received_money = 0 WHERE `uuid` = "2eaef3e4-eeb6-41f7-9ecf-5d503465baba";
COMMIT;
但我想在我的 Java 代码中直接使用此 sql 代码:
String sql = "START TRANSACTION;\n" +
"SELECT placed_money FROM bank_accounts WHERE uuid = \"" + uuid + "\";\n" +
"UPDATE bank_accounts SET placed_money = 0 WHERE uuid = \"" + uuid + "\";\n" +
"COMMIT;";
Connection connection = connect();
Statement stmt = connection.createStatement();
ResultSet resultSet = stmt.executeQuery(sql);
但每次我都会遇到这个错误
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT received_money FROM bank_accounts WHERE `uuid` = "2eaef3e4-eeb6-41f7-9ecf' at line 2
这是一个多重查询。
所以你需要一个允许这样的连接字符串
String dbUrl = "jdbc:mysql:///test?allowMultiQueries=true";
进一步删除所有 \n 并如我在评论中所说替换“
String sql = "START TRANSACTION;" +
"SELECT placed_money FROM bank_accounts WHERE uuid = '" + uuid + "';" +
"UPDATE bank_accounts SET placed_money = 0 WHERE uuid = '" + uuid + "';" +
"COMMIT;";