[英]How to go capture the response time of executing multiple queries simultaneously in Java?
[英]Executing multiple native queries in one go
我想知道是否可以通過 Hibernate (3.2) 中的一個SQLQuery#executeUpdate()
調用來執行幾個以分號分隔的 SQL 更新查詢。
我有包含多個更新的字符串,如下所示:
String statements = "UPDATE Foo SET bar=1*30.00 WHERE baz=1;
UPDATE Foo SET bar=2*45.50 WHERE baz=2;...";
我正在嘗試做
Query query = session.createSQLQuery(statements);
query.executeUpdate();
但不斷收到以下錯誤
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near
'UPDATE Foo SET bar=Y WHERE ' at line 3
如果我手動執行statements
的內容,我不會收到任何錯誤,所以我假設多個分號分隔的查詢在 Hibernate 或 JDBC 的某個地方造成了麻煩。
只拆分statements
字符串並為每一行單獨執行createSQLQuery(statement).executeUpdate()
會更好嗎?
另一種方法是使用 CASE 語句。 例如:
UPDATE Foo
SET bar =
CASE baz
WHEN 1 THEN 'X'
WHEN 2 THEN 'Y'
END CASE
WHERE baz in (1,2)
好吧,我會說,您至少必須用單引號括住 X 和 Y。
您可以做的是使用批處理語句,基本上在執行查詢之前調用addBatch(string query);
方法,然后當所有查詢都在批處理中時,只需調用executeBatch()
方法。 這將按照您將 m 添加到批次的順序為您執行所有操作。
另外:你的語法錯誤是你需要用引號'Y'
或'X'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.