`

通过JDBC的DatabaseMetaData获取数据库元数据

 
阅读更多

原文地址: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;
	}
	
}

 

分享到:
评论

相关推荐

    DatabaseMetaData生成数据库DLL

    通过调用`Connection`对象的`getMetaData()`方法,我们可以获取到`DatabaseMetaData`实例,从而获取到关于数据库的各种元数据,例如表、视图、列、索引等的详细信息。 2. **元数据的作用** 元数据是描述数据的数据...

    JDBC元数据操作--DatabaseMetaData接口Demo

    DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口,本文只讲解DatabaseMetaData接口获取元数据的方法。 文章地址:http://blog.csdn.net/chen_zw/article/details/18816599

    基于Java JDBC的数据库元数据查询设计源码

    项目分为核心查询模块“database-metadata-core”和数据展示模块“database-metadata-view”,其中核心模块采用纯JDBC方式,通过java.sql.DatabaseMetaData对象获取数据库元数据信息,不依赖任何外部jar包,适用于...

    java获取数据库主外键

    使用`Connection`对象的方法`getMetaData()`获取`DatabaseMetaData`对象,它是用于访问数据库元数据的对象。 ```java DatabaseMetaData dbmd = connection.getMetaData(); ``` 3. **获取表列表** 使用`...

    java 查询oracle数据库所有表DatabaseMetaData的用法(详解)

    在Java编程中,当我们需要与Oracle数据库交互时,`java.sql.DatabaseMetaData`接口提供了一种方式来获取关于数据库的各种元数据信息。这篇文章将详细介绍如何利用`DatabaseMetaData`查询Oracle数据库的所有表。 ...

    数据库元数据资料,关于oracle的

    在Oracle数据库中,这些信息存储在数据字典中,可以通过数据库元数据API来访问和查询。 在Java编程中,我们可以使用JDBC(Java Database Connectivity)的`DatabaseMetaData`接口来获取数据库的元数据。这个接口...

    java读取metadata元信息

    5. **数据库元数据** 在数据库操作中,JDBC(Java Database Connectivity)提供了`DatabaseMetaData`接口,允许查询数据库的元信息,如表结构、列信息、索引、视图等。通过`Connection`对象的`getMetaData()`方法...

    JAVA100例之实例56 数据库元数据

    通过调用Connection对象的`getMetaData()`方法,我们可以得到一个DatabaseMetaData对象,它是数据库元数据的接口。 ```java DatabaseMetaData metaData = conn.getMetaData(); ``` 3. **查询表信息**: - `...

    怎样用JDBC查看数据库的详细信息

    这篇博客"怎样用JDBC查看数据库的详细信息"可能是关于如何通过JDBC接口查询和获取数据库中的数据,以及如何获取数据库的元数据。 首先,我们需要了解JDBC的基本步骤: 1. 加载驱动:在Java程序中,我们通常使用`...

    java 获取数据库的基本信息

    连接建立后,可以使用`DatabaseMetaData`接口获取数据库的各种元数据。这个接口提供了大量方法,如`getDatabaseProductName()`获取数据库产品名称,`getDatabaseProductVersion()`获取数据库版本信息,`getUserName...

    Java获取数据库属性信息.rar

    `codesc.net`可能是包含示例代码的资源,为了更好地理解和应用上述知识,建议下载并研究这些代码,以便于实际操作中更熟练地处理数据库元数据。在编写代码时,记得处理可能的异常,并根据实际情况调整方法的参数,以...

    jdbc.rar_数据库实现

    8. **DatabaseMetaData**:提供关于数据库及其特性、支持的数据类型、表、视图等元数据的信息。 9. **Exception Handling**:在处理数据库操作时,可能会遇到如`SQLException`这样的异常,需要适当的捕获和处理。 ...

    Java Web程序设计-1期 项目库_单元案例_数据库元数据操作和分页教学案例.doc

    在Java Web开发中,数据库元数据操作是一项重要的技能,它允许程序员获取关于数据库的各种信息,例如数据库版本、驱动信息等。本案例主要讲解如何使用Java的`DatabaseMetaData`类来获取数据库的元数据,并展示了一个...

    JDBC 3.0 数据库编程

    8. **元数据增强**:提供更丰富的数据库元数据信息,如`DatabaseMetaData`接口,可用于获取表结构、列信息等。 9. **性能优化**:引入了Statement的`executeUpdate(String sql, int autoGeneratedKeys)`方法,可以...

    如何快速的为现有数据库建立数据字典?

    2. **元数据获取**: - **元数据**: 元数据是关于数据的数据,如数据库的结构、表的定义、字段信息、索引详情等。在Java中,可以使用JDBC(Java Database Connectivity)API来获取元数据。例如,`Connection....

    java各种JDBC数据库驱动文件

    包括CallableStatement用于调用存储过程,ResultSetMetaData获取列信息,DatabaseMetaData获取数据库元数据,以及RowSet接口的离线数据处理能力。 9. **JDBC与ORM框架的关系** ORM(Object-Relational Mapping)...

    JAVA数据库编程JDBC 与 Java数据库接口JDBC入门基础讲座 与 JDBC API数据库编程实作教材-程序设计-JAVA JDBC全压缩包.rar

    7. **数据库元数据**:通过`DatabaseMetaData`获取数据库的结构和属性信息。 《Java数据库接口JDBC入门基础讲座》可能是针对初学者的教程,着重于介绍JDBC的基础概念和基本操作,包括如何设置数据库连接参数、执行...

    利用JDBC实现对MS SQL Server数据库的访问 (1).pdf

    - 其他辅助接口如SQLException处理异常,DatabaseMetaData获取数据库元数据等。 【JDBC访问MS SQL Server步骤】 1. 加载驱动:使用DriverManager的registerDriver()方法加载对应MS SQL Server的JDBC驱动。 2. 建立...

    java 获取数据库对SQL支持的信息

    在`GetDataBaseMessage.java`这个文件中,你可能会看到类似上述的实现,通过读取数据库元数据获取关于SQL支持的信息。而`Java.jpg`可能是用来辅助理解的示例图或数据库连接配置的截图。 总之,Java中的JDBC API提供...

    Caused by: java.sql.SQLException: JZ0SJ: 没有在此数据库中发现元数据存取器信息。 请按 jConnect 文档中所述安装

    **元数据存取器**在JDBC中是用于获取关于数据库结构信息的接口,比如`DatabaseMetaData`,它提供了大量方法来获取数据库的详细信息。这些信息包括但不限于数据库产品名称、版本、表、视图、索引等。 解决这个问题的...

Global site tag (gtag.js) - Google Analytics