java获取mysql表结构_Java 获取数据库的库、表、字段信息 (仅供参考)

本文通过Druid数据源展示了如何使用Java获取MySQL数据库的连接,并详细介绍了如何获取数据库元数据,包括驱动信息、数据库名、表信息及字段信息。通过getMetadata()方法获取表名、表类型、表所属数据库以及表的字段名、类型和长度等。同时提供了两种不同的方式来获取数据库中的表和字段信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 通过druid配置相关信息

druid jar包

com.alibaba

druid

1.0.14

java 代码

public void GetDbConnect() throws Exception {

DruidDataSource dataSource = null;

try{

dataSource =new DruidDataSource();

//设置连接参数 (***自己定义传递的参数***)

dataSource.setUrl(requestDB.getUrl());

dataSource.setDriverClassName(requestDB.getDriver());

dataSource.setUsername(requestDB.getUserName());

dataSource.setPassword(requestDB.getPassword());

//配置初始化大小、最小、最大

dataSource.setInitialSize(1);

dataSource.setMinIdle(1);

dataSource.setMaxActive(20);

//连接泄漏监测

dataSource.setRemoveAbandoned(true);

dataSource.setRemoveAbandonedTimeout(30);

//配置获取连接等待超时的时间

dataSource.setMaxWait(20000);

//配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒

dataSource.setTimeBetweenEvictionRunsMillis(20000);

//防止过期

dataSource.setValidationQuery("SELECT 'x'");

dataSource.setTestWhileIdle(true);

dataSource.setTestOnBorrow(true);

}catch(Exception e){

logger.error("异常:", e);

}

// 建立了连接

Connection con=dataSource.getConnection();

}

1.1 获取数据库相关信息(通过getMeteData()方法)

数据库驱动的信息、数据库名、数据表信息(名字、个数) ---java.sql.DatabaseMetaData

con = connect.getConnect();

DatabaseMetaData dbMetaData = con.getMetaData();

System.out.println(dbMetaData.getDriverName());

System.out.println(dbMetaData.getURL());

System.out.println(dbMetaData.getUserName());

System.out.println("");

输出为:

MySQL Connector Java

jdbc:mysql://...

root@168.......

1.2 获取所有表信息

ResultSet rs = dbMetaData.getTables(null, null, null, new String[] { "TABLE" });

int i = 0;

while (rs.next()) {

i++;

if(i==10) {

break;

}

System.out.println("表名:" + rs.getString("TABLE_NAME"));

System.out.println("表类型:" + rs.getString("TABLE_TYPE"));

System.out.println("表所属数据库:" + rs.getString("TABLE_CAT"));

System.out.println("表备注:" + rs.getString("REMARKS"));

tables.add(rs.getString("TABLE_NAME"));

}

}

关于 getTables(null, null, null, new String[] { "TABLE" }) 这个方法 api里面对其参数有详细的介绍(没事情多看看api介绍,发现还是很详细的~~)

输出为:

表名:activity

表类型:TABLE

表所属数据库:ztdb

表备注:

表名:activityreview

表类型:TABLE

表所属数据库:ztdb

表备注:

1.2.1 获取所有表的另一种方法(这个方法并没有找到返回表的详细信息; 可能有详细信息但是自己并没有发现吧)

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery("SHOW TABLES");

while (rs.next()) {

String tableName = rs.getString(1);

System.out.println(rs.getString(1));

tables.add(tableName);

}

1.3 获取表中所有字段的信息

表结构信息,如字段名、列数 ---java.sql.ResultSetMetaData

ResultSet rsColimns = dbMetaData.getColumns(null, "%", rs.getString("TABLE_NAME"), "%");

while (rsColimns.next()) {

System.out.println("字段名:" + rsColimns.getString("COLUMN_NAME") + "------" + "类型:"

+ rsColimns.getString("TYPE_NAME") + "------" + "长度:" + rsColimns.getString("COLUMN_SIZE")

+ "------" + "备注:" + rsColimns.getString("REMARKS"));

}

输出为:

字段名:ACTIVITYINDEX------类型:BIGINT UNSIGNED------长度:20------备注:活动编号

字段名:SIMPLECONTENT------类型:TEXT------长度:65535------备注:简要信息,用于客户浏览,存入json

字段名:FULLCONTENTEDIT------类型:MEDIUMTEXT------长度:16777215------备注:全文内容,用于回显编辑使用,存入json

字段名:TITLE------类型:VARCHAR------长度:255------备注:标题

1.3.1 获取字段信息的另一种方法(亲测没有备注信息的返回)

for (String tableName : tables) {

String sql = "select * from " + tableName;

try {

PreparedStatement ps = con.prepareStatement(sql);

ResultSet rs = ps.executeQuery();

ResultSetMetaData meta = rs.getMetaData();

System.out.println(rs);

int columeCount = meta.getColumnCount();

System.out.println("表 "+ tableName + "共有 "+columeCount+" 个字段。字段信息如下:");

for (int i = 1; i < columeCount + 1; i++) {

System.out.println("字段名:"+meta.getColumnName(i)+"------"

+"类型:"+meta.getColumnTypeName(i)+"------" +"长度:"+meta.getColumnDisplaySize(i));

}

} catch (SQLException e) {

e.printStackTrace();

}

}

关于 getString() 中的参数获取:

e8ad294068bc

TIM截图20180112123741.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值