通过JDBC的DatabaseMetaData获取数据库元数据
程序员文章站
2022-07-13 16:43:01
...
原文地址:http://blog.csdn.net/hu_shengyang/article/details/7861261
package com.adam.test.entity; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import com.adam.dev.utils.JdbcByPropertiesUtil; public class TestDatabaseMetaData { private JdbcByPropertiesUtil jbpu = JdbcByPropertiesUtil.getInstance(); public JdbcByPropertiesUtil getJbpu() { return jbpu; } public void setJbpu(JdbcByPropertiesUtil jbpu){ this.jbpu = jbpu; } public Properties getProperties(){ Properties pros = JdbcByPropertiesUtil.readPropertiesFile(); return pros; } /** * 读取配置文件jdbc.properties中的数据库名称 * @return * @throws Exception */ public String getDataSourceName()throws Exception{ Properties pros = this.getProperties(); String dbName = pros.get("dbName").toString(); return dbName; } /** * 获取数据库中的表名称与视图名称 * @return */ public List getTablesAndViews()throws Exception{ Connection conn = jbpu.getConnection(); ResultSet rs = null; List list = new ArrayList(); try { Properties pros = this.getProperties(); String schema = pros.get("user").toString(); DatabaseMetaData metaData = conn.getMetaData(); rs = metaData.getTables(null, schema, null, new String[]{"TABLE","VIEW"}); while(rs.next()){ String tableName = rs.getString("TABLE_NAME"); list.add(tableName); } } catch (SQLException e) { e.printStackTrace(); } finally{ jbpu.close(rs, null, conn); } return list; } /** * 利用表名和数据库用户名查询出该表对应的字段类型 * @param tableName 表名 * @return * @throws Exception */ public String generateBean()throws Exception{ Connection conn = jbpu.getConnection(); ResultSet rs = null; String strJavaBean = ""; String tableName = this.getDataSourceName(); try{ Properties pros = this.getProperties(); String schema = pros.get("user").toString(); DatabaseMetaData metaData = conn.getMetaData(); rs = metaData.getColumns(null, schema, tableName, null); Map map = new HashMap(); while(rs.next()){ String columnName = rs.getString("COLUMN_NAME");//列名 String dataType = rs.getString("DATA_TYPE");//字段数据类型(对应java.sql.Types中的常量) String typeName = rs.getString("TYPE_NAME");//字段类型名称(例如:VACHAR2) map.put(columnName, dataType+":"+typeName); } // 其它生成javaBean的相关操作 }catch(Exception e){ e.printStackTrace(); }finally{ jbpu.close(rs, null, conn); } return strJavaBean; } }
上一篇: 将博客搬至CSDN
下一篇: MyBatis如何防止SQL注入
推荐阅读
-
通过备份记录获取数据库的增长情况
-
通过系统数据库获取用户所有数据库中的视图、表、存储过程
-
Ajax通过XML异步提交的方法实现从数据库获取省份和城市信息实现二级联动(xml方法)
-
Java通过JDBC连接数据库的三种方式!!!并对数据库实现增删改查
-
通过JDBC的DatabaseMetaData获取数据库元数据
-
获取SQL Server数据库元数据的几种方法
-
java 项目中通过JDBC 实现sqlite数据库的增删改查操作
-
EF Core怪问题之通过依赖注入获取的上下文在执行异步写入数据库时抛出异常?
-
快速通过zabbix获取数据库连接的信息及部分扩展
-
Java之通过接口获取数据并用JDBC存储到数据库中