前言:
现时朋友们对“java数据库创建表”可能比较重视,看官们都想要剖析一些“java数据库创建表”的相关内容。那么小编也在网摘上搜集了一些有关“java数据库创建表””的相关知识,希望我们能喜欢,看官们一起来了解一下吧!场景:网上看到一个项目在线生成表结构,感觉这样很方便,能够节省很大的人工,也想做一个这样的项目,先尝试着写了个测试类,后续再找前端继续完善
我这边动态创建的前提是有一个存在的数据库,代码如下:
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 creatsql = "CREATE TABLE hello( " + " id int(4) not null ," + " hname varchar(10) not null " + " ) charset=utf8; "; //获取数据库表名 ResultSet rs = conn.getMetaData().getTables(null, null, "hello", null); // 判断表是否存在,如果存在则什么都不做,否则创建表 if(!rs.next() ){ stat.executeLargeUpdate(creatsql); }
然后进行插入数据和查看数据
//添加数据 stat.executeUpdate(" insert into hello values(1,'JackRen') "); stat.executeUpdate(" insert into hello values(1,'张三') "); //查询数据 ResultSet result = stat.executeQuery("select * from hello"); while (result.next()) { System.out.println(result.getInt("id") + " " + result.getString("hname")); }
最后别忘了要关闭数据库连接
//关闭数据库 result.close(); stat.close(); conn.close();
我们试想下,如果我想要表名和表中的字段都是从前端传入到后台,后台拿到后进行处理,然后再写入数据库。想到这就开始做吧,我们先做理想情况下,前端拼接好的数据是一个字符串,放入到数组中,画个简图:
修改下原有代码:
/* * 动态创建表字段 * @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(); }
执行程序入口:
public static void main(String[] args) throws Exception{ List<String> fileds = new ArrayList<>(); fileds.add(" id int(4) not null ,"); fileds.add(" hname varchar(10) not null "); dynamicCreateTableFileds("test",fileds); }
执行结果:
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java数据库创建表