获取表结构与字段信息:

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<String> tableName = new ArrayList<String>();
Map<String, List<Entry<String, String>>> tables = new HashMap<String, List<Entry<String, String>>>();
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<Entry<String, String>> colums = new ArrayList<Entry<String, String>>();
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<String, String> entry = new SimpleEntry(columName, columType);
colums.add(entry);
}
tables.put(tmpTableName, colums);
}

Iterator<Entry<String, List<Entry<String, String>>>> iter = tables.entrySet().iterator();
while (iter.hasNext()) {
Entry<String, List<Entry<String, String>>> 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...");
}
}

java获取mysql表结构相关推荐

  1. java 获取oracle表结构_Java导出oracle表结构实例详解

    Java导出oracle表结构实例详解 发布于 2020-7-20| 复制链接 摘记:  Java导出oracle表结构实例详解最近用到的,因为plsql是收费的,不让用,找了很多方法终于发现了这个. ...

  2. Java获取数据库表结构

    Java能够操作数据库,当然能够获取到数据库的表结构. 虽然各个DB厂商查询数据库表结构的语句不同,但是Java中通过封装,可以使用共同的API来获取. 各个具体的DB厂商有各自的实现,只需导入相应的 ...

  3. java获取mysql表的主键_Spring中获取数据库表主键序列

    在程序开发中,我们经常有写数据库表的操作,数据表中经常带有主键自增序列,如何获取自增序列.spring中提供了相应的类 DataFieldMaxValueIncrementer. DataFieldM ...

  4. java 获取oracle表结构_获取Oracle中所有表的列表?

    回答(19) 2 years ago 我们可以从以下查询获取所有表格,包括列详细信息: SELECT * FROM user_tab_columns; 2 years ago 使用sqlplus更好地 ...

  5. java 获取mysql表的大小_oracle中查询表大小和表空间大小 JAVA

    1.查看Oracle数据库中表空间信息的工具方法: 使用oracle enterprise manager console工具,这是oracle的客户端工具,当安装oracle服务器或客户端时会自动安 ...

  6. JAVA实现导出mysql表结构到Word详细注解版

    JAVA实现导出mysql表结构到Word详细注解版 转自https://blog.csdn.net/weixin_42041153/article/details/109739073 本文在原文中一 ...

  7. mysql 一键获取数据库表结构

    作用: 1.获取当前数据库所有的表信息 2.获取当前表结构信息 查询数据库中的表: -- 查询数据库中的表 SELECT * FROM information_schema.`TABLES` wher ...

  8. Java获取数据库表的字段信息,及如何将ResultSet转为json

    为什么80%的码农都做不了架构师?>>>    一.Java获取数据库表的各个字段的相关信息 在某些开发情景中,需要获取数据库中表的各个字段的相关信息,如字段名,字段类型,字段大小等 ...

  9. 修改mysql表结构语句

    昨天在执行碰到几个报错,总提示缺少mysql表结构里的字段什么的,当时有点没头绪不知道从哪里着手,再次记录一下修改表结构的语句,保证下次不会在出现此类问题; mysql 修改表结构语句 ALTER T ...

最新文章

  1. 区块链有哪些技术特征
  2. 什么是多重共线性问题?如何判别多重共线性问题?怎么避免多重共线性对模型和学习的干扰?
  3. 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.8 创建数据库...
  4. CAN 总线 之一 总线拓扑、物理电平、发展史 详解
  5. 用vmware-converter4把linux 迁移到ESX4.1中
  6. 《C++ Primer》7.3.3节练习
  7. java手机象棋软件下载,Java手机网络版象棋游戏附源码JAVA游戏源码下载
  8. React15.6.0实现Modal弹层组件
  9. 1万吨猪肉只够吃1.5小时,中国人是有多爱猪肉?
  10. 全国各地收货详细地址_2020高考成绩在哪里查询 2020全国各地高考分数查询时间地址最新...
  11. Ubuntu Server Download
  12. Rust : codewars的Sum of Pairs
  13. 使用Python,matplotlib绘制Nomogram列线图
  14. 计算机怎么调整桌面图标的大小,电脑显示器屏幕图标大小如何设置_电脑显示屏内图标大小怎么调...
  15. 莫教引动虚阳发,精竭容枯百病 侵
  16. 【怎么用u盘装系统】
  17. 一个SAP开发人员的双截棍之路
  18. 微信小程序python token验证_微信小程序爬虫遇到 token 的问题
  19. ieg技术总监_干货!从程序员到技术总监,大牛内部分享的资料
  20. 极光推送之java后台封装REST API

热门文章

  1. mysql构建镜像时写入密码_用Dockerfile手动创建mysql5.7主从镜像
  2. ios php range,PHP range() 函数 - PHP 基础教程
  3. docker安装_以简便的方式监控Docker容器中的ADF应用程序
  4. html 滚动条_数十种自定义多彩多样滚动条样式
  5. 特征值与特征向量 matlab数值解,用MATLAB和numpy求解特征值和特征向量,matlab,与
  6. Android字体占有内存,android随意创建字体对象引发的应用程序运行时占用内存过大...
  7. JAVA写出来的塔防能有多好玩?......真香!
  8. 一口气带你踩完五个 List 的大坑!
  9. fpm制作mysql rpm包_fpm制做mysql-5.6.33 rpm包
  10. 动易html编辑器,文章内容一键排版功能——动易5.1版新特性