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