SpringBoot下Java动态创建表和表字段

1,045 阅读1分钟
/*
 * 动态创建表字段
 * @author JackRen
 * @date 2021/2/24
 * @return
 **/
private static void dynamicCreateTableFileds(String table,List<String> fileds) throws Exception{
    Class.forName("com.mysql.jdbc.Driver");

    //一开始必须必填一个已经存在的数据库
    String url = "jdbc:mysql://172.16.10.54:3306/jeemp?useUnicode=true&characterEncoding=UTF-8" +
            "&verifyServerCertificate=false&useSSL=false";
    Connection conn = DriverManager.getConnection(url, "root", "root");
    Statement stat = conn.createStatement();
    String sql =  "CREATE TABLE "+table+"(";
    for (String str:fileds) {
        sql = sql+str;
    }
    sql = sql + " ) charset=utf8; ";
    //获取数据库表名
    ResultSet rs = conn.getMetaData().getTables(null, null, table, null);
    // 判断表是否存在,如果存在则什么都不做,否则创建表
    if(!rs.next() ){
        stat.executeLargeUpdate(sql);
    }

    //添加数据
    stat.executeUpdate(" insert into "+table+" values(1,'JackRen') ");
    stat.executeUpdate(" insert into "+table+" values(1,'昊天') ");

    //查询数据
    ResultSet result = stat.executeQuery("select * from "+table);
    while (result.next()) {
        System.out.println(result.getInt("id") + " " + result.getString("hname"));
    }

    //关闭数据库
    result.close();
    stat.close();
    conn.close();
}