java获取mysql表结构_java获取mysql表结构

获取表结构与字段信息: package com.mysql; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; import java.sql.Types; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.AbstractMap.SimpleEntry; import java.util.Map.Entry; public class TestDbMetaData { @SuppressWarnings("unchecked") public static void main(String[] args) throws Exception { String dburl = "jdbc:mysql://127.0.0.1:3306/fhadmin"; String dbuser = "root"; String dbpwd = "root"; Class.forName("com.mysql.jdbc.Driver"); List tableName = new ArrayList(); Map>> tables = new HashMap>>(); Connection con = DriverManager.getConnection(dburl, dbuser, dbpwd); DatabaseMetaData metaDb = con.getMetaData(); ResultSet rsTableName = metaDb.getTables(null, null, null, new String[] { "table" }); while (rsTableName.next()) { String tmpTableName = rsTableName.getString("table_name"); tableName.add(tmpTableName); String sql = "select * from " + tmpTableName; Statement st = con.createStatement(); ResultSet rsColumName = st.executeQuery(sql); ResultSetMetaData metaRs = rsColumName.getMetaData(); List> colums = new ArrayList>(); for (int i = 1; i <= metaRs.getColumnCount(); i++) { System.out.print( metaRs.getColumnName(i)+","+metaRs.getColumnClassName(i).substring(metaRs.getColumnClassName(i).lastIndexOf(".") + 1)); System.out.println(",是否为空:"+metaRs.isNullable(i));//0 不能为空   1可以为空     //System.out.println(metaRs.getColumnLabel(i));     //System.out.println(metaRs.getColumnDisplaySize(i)); String columName = metaRs.getColumnName(i); // 某列类型的精确度(类型的长度)                 int precision = metaRs.getPrecision(i);                 // 小数点后的位数                  int scale = metaRs.getScale(i);                 // 是否自动递增                  boolean isAutoInctement = metaRs.isAutoIncrement(i); String aa= metaRs.getColumnTypeName(i); String columType = ""; switch (metaRs.getColumnType(i )) { case Types.CHAR: columType = "String"; break; case Types.BIGINT: columType = "int"; break; case Types.DATE: columType = "Date"; break; case Types.DECIMAL: columType = "int"; break; case Types.INTEGER: columType = "int"; break; case Types.NCHAR: columType = "String"; break; case Types.NUMERIC: columType = "int"; break; case Types.NVARCHAR: columType = "String"; break; case Types.SMALLINT: columType = "int"; break; case Types.TIME: columType = "Date"; break; case Types.TINYINT: columType = "int"; break; case Types.TIMESTAMP: columType = "Date"; break; case Types.VARCHAR: columType = "String"; break; default: throw new Exception("数据类型不支持,orm映射异常"); } Entry entry = new SimpleEntry(columName, columType); colums.add(entry); } tables.put(tmpTableName, colums); } Iterator>>> iter = tables.entrySet().iterator(); while (iter.hasNext()) { Entry>> entry = iter.next(); System.out.println("表名:" + entry.getKey()); for (int i = 0; i < entry.getValue().size(); i++) { System.out.print(entry.getValue().get(i).getKey() + " " + entry.getValue().get(i).getValue()); } System.out.println(); } System.out.println("complete..."); } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值