import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.ScriptRunner;
import org.junit.Test;
import java.io.IOException;
import java.sql.*;
public class test {
@Test
public void test(){
if(isTableExistEntrust("ai_hmst")){
//存在该表执行代码
}else{
RunSql("peple");
}
}
/**
* 运行指定的sql脚本
* @param sqlFileName 需要执行的sql脚本的名字
*/
public void RunSql(String sqlFileName) {
try {
// jdbc 连接信息: 注: 现在版本的JDBC不需要配置driver,因为不需要Class.forName手动加载驱动
String url = "jdbc:mysql://ip:端口/数据库名";
String username = "用户名";
String password = "密码";
// 建立连接
Connection conn = DriverManager.getConnection(url, username, password);
// 创建ScriptRunner,用于执行SQL脚本
ScriptRunner runner = new ScriptRunner(conn);
runner.setErrorLogWriter(null);
runner.setLogWriter(null);
// 执行SQL脚本
runner.runScript(Resources.getResourceAsReader(sqlFileName + ".sql"));
// 关闭连接
conn.close();
// 若成功,打印提示信息
System.out.println("====== SUCCESS ======");
} catch (IOException | SQLException e) {
e.printStackTrace();
}
}
/**
* 判断表是否存在
* @param tableName 表名
*/
public boolean isTableExistEntrust(String tableName){
Connection conn = null;
boolean result = false;
try {
// jdbc 连接信息: 注: 现在版本的JDBC不需要配置driver,因为不需要Class.forName手动加载驱动
String url = "jdbc:mysql://ip:端口/数据库名";
String username = "用户名";
String password = "密码";
// 建立连接
conn = DriverManager.getConnection(url, username, password);
DatabaseMetaData meta = conn.getMetaData();
ResultSet tables = meta.getTables (null, null, tableName, null);
if (tables.next()) {
result = true;
}
} catch (Exception e) {
e.printStackTrace ();
}finally {
if(conn !=null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return result;
}
}
常见问题04: Java实现判断数据库中是否有某表,如果没有,则执行sql文件创建该表
猜你喜欢
转载自blog.csdn.net/weixin_39570655/article/details/132209496
今日推荐
周排行