java一次執行多條SQL語句


在學習java注解的過程中有過動態DDL的操作(根據java結構類生成SQL語句)

在這期間用到了注解

 

@Table(value = "user",deleteBefore = true)
deleteBefore指創建表前是否刪除
若deleteBefore為false生成的string sql為

 

CREATE TABLE user(
 uid VARCHAR(50),
 name VARCHAR(30),
 age INTEGER,
 salary FLOAT,
 CONSTRAINT PRIMARY KEY(uid)
) engine=INNODB;

若deleteBefore為True生成的string sql為

DROP TABLE IF EXISTS user;
CREATE TABLE user(
 uid VARCHAR(50),
 name VARCHAR(30),
 age INTEGER,
 salary FLOAT,
 CONSTRAINT PRIMARY KEY(uid)
) engine=INNODB;

 

當deleteBefore 為true時多了DROP TABLE IF EXISTS user;

sql執行語句為:

public void Execute(String sql){
try {
PreparedStatement preparedStatement = this.connection.prepareStatement(sql);
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
close();
}
}
當deleteBefore=false時,可以正常執行
當deleteBefore=true在使用prepareStatement時此語句報了以下錯誤

 

 

解決方法:

mysql默認的批處理語句為false只需在URL后面添加allowMultiQueries=true

private static final String URL = "jdbc:mysql://localhost:3306/database?useSSL=false&serverTimezone=UTC&allowMultiQueries=true";
即可正常運行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM