`
ezerg
  • 浏览: 273649 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

JDBC 中 DatabaseMetaData 接口的使用

阅读更多
    简单介绍一下 java.sql.DatabaseMetaData 接口,关于数据库的整体综合信息。官方 API 文档已经介绍很详细,我这里简单说一下实际的使用。
    它还存在一系列的以 supports 开头的接口也比较实用,例如 supportsBatchUpdates() 获取此数据库是否支持批量更新,还有 supportsTransactions() 获取此数据库是否支持事务等等。
    实现的功能很简单,就是根据数据库中的表自动生成相对应的 Java Bean 文件。
    主要思路是先得到数据库中所有表,再得到每张表的所有字段,如果是主健字段则特殊标记一下。
主要用到几个接口:
ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)
          获取可在给定类别中使用的表的描述。
ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)
          获取可在指定类别中使用的表列的描述。
ResultSet getPrimaryKeys(String catalog, String schema, String table)
          获取对给定表的主键列的描述。
ResultSet getExportedKeys(String catalog, String schema, String table)
          获取引用给定表的主键列(表导入的外键)的外键列的描述。
          
     // 取得数据库中所有表名称
	public List getTables() {
		List tables = new ArrayList();
		Connection con = null;
		ResultSet rs = null;
		try {
			con = DbUtils.getConnection("jwdt");
			rs = con.getMetaData().getTables(null, null, null, new String[] { "TABLE" });
			while (rs.next()) { // 注意:结果集中存在表的很多信息,表名称在第 3 列
				tables.add(rs.getString(3));
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DbUtils.close(con);
		}
		return tables;
	}

     // 根据表名称取得表所有字段
	public List getColumns(String table) {
		List columns = new ArrayList();
		Connection con = null;
		ResultSet rs = null;
		try {
			con = DbUtils.getConnection("jwdt");
			rs = con.getMetaData().getColumns(null, null, table, null);
			while (rs.next()) { // 注意:结果集中存在表的很多信息,字段名称在第 4 列
				columns.add(rs.getString(4));
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DbUtils.close(con);
		}
		return columns;
	}
	
     // 根据表名称取得表主键字段
     // 取得表外键字段的操作使用 getExportedKeys(null, null, table) 方法
	public String getPrimaryKeys(String table) {
		String keys = "";
		Connection con = null;
		ResultSet rs = null;
		try {
			con = DbUtils.getConnection("jwdt");
			rs = con.getMetaData().getPrimaryKeys(null, null, table);
			while (rs.next()) {// 注意:结果集中存在表的很多信息,字段名称在第 4 列
				keys += rs.getString(4) + ",";
			}
			if (!keys.equals("")) { // 去掉最后面的逗号
				keys = keys.substring(0, keys.length() - 1);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DbUtils.close(con);
		}
		return keys;
	}

生成类属性的时候,还要注意数据库表字段的类型与 Java 类型的对应,最好多加一个方法作类型转换。
生成类文件的方式,建议使用类似 FreeMarker 的模板语言,直接写在 Java 类中代码太难看了。


1
0
分享到:
评论
2 楼 ezerg 2012-06-04  
兄弟,你那样写的效果和没写是一样的,因为你没有转换编码。例如从数据库存储的是ISO-8859-1,而页面显示是GBK,则应该是 new String(rs.getString().getBytes("ISO-8859-1"),"GBK")
1 楼 yl419440513 2012-05-04  
我也用的是这个,可是却被一个问题难住了,就是getString获取列名称表名称的时候会出现中文名称乱码的情况。我用了new String(rs.getString().getBytes())也是没有效果不知道谁知道呢

相关推荐

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

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

    DatabaseMetaData生成数据库DLL

    `DatabaseMetaData` 是Java中的一个接口,它提供了关于JDBC驱动程序和连接数据库的信息。通过调用`Connection`对象的`getMetaData()`方法,我们可以获取到`DatabaseMetaData`实例,从而获取到关于数据库的各种元...

    DatabaseMetaDate接口

    DatabaseMetaData 接口作为整体提供有关数据库的综合信息。

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

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

    JDBC.rar_JDBC API_JDBC 接口

    8. **DatabaseMetaData**: 提供有关数据库的元数据,如数据库的版本、表名、列名等。 ### JDBC连接数据库步骤 1. 加载驱动:通过Class.forName()方法加载JDBC驱动。 2. 获取连接:使用DriverManager.get...

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

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

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

    总结来说,使用JDBC查看数据库的详细信息主要涉及加载驱动、建立连接、获取`DatabaseMetaData`对象并调用其方法,以及正确处理结果集和关闭资源。这对于任何需要与数据库交互的Java应用都是至关重要的。通过阅读博文...

    jdbc使用参考手册

    - **JDBC批注**:用于元数据查询,如`DatabaseMetaData`接口。 - **结果集元数据**:`ResultSetMetaData`对象提供列的相关信息。 - **JDBC逃逸**:防止SQL注入的编码技术。 ### 10. 示例代码 ```java Class.for...

    java判断数据库表是否存在

    2. **DatabaseMetaData接口** 3. **getTables方法** 4. **ResultSet处理** ### 实现原理与步骤 #### 1. JDBC简介 JDBC是Java中用于连接和操作关系型数据库的标准API。它提供了一套标准的方法来执行SQL语句,获取...

    JDBC学习资料和使用工具

    JDBC元数据是关于数据库结构的信息,如表名、列名、索引等,可以通过DatabaseMetaData接口获取。这些信息对于动态构建SQL语句或自动生成数据库相关的代码非常有用。 通过深入学习JDBC,开发人员不仅可以更好地理解...

    JDBC4.0 API一览表

    JDBC4.0增强了`DatabaseMetaData`接口,添加了一些新方法来获取关于数据库特性的更多信息,如支持的函数、存储过程、触发器等,这有助于开发人员更好地了解所连接的数据库。 **6. 预编译的SQL语句** `...

    JDBCJDBC高级应用

    JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一种接口。在JDBC高级应用中,我们可以利用其提供的功能实现更高效、更灵活的数据操作。以下是一些关键知识点: 1. **元数据获取**...

    jdbc基础的详解与总结

    ResultSet 接口是用来接收 select 语句返回的查寻结果的,DatabaseMetaData 是数据库元数据,ResultSetMetaData 是结果集元数据,Types 是特殊的类,只包含静态的常量,代表 jdbc 类型。 jdbc 的应用步骤包括注册...

    jdbc-增删改查和封装增删改查.docx

    在jdbc中,我们可以使用Statement、PreparedStatement和CallableStatement三个接口来执行SQL语句。 jdbc连接数据库 在jdbc中,我们可以使用DriverManager来加载数据库驱动程序,例如mysql的驱动程序...

    JDBC(javaweb)

    6. **数据库元数据**:Connection对象还提供了DatabaseMetaData接口,可以获取关于数据库的元数据信息,如数据库版本、表名、列名等。 7. **批处理**:PreparedStatement对象支持批处理,可以一次提交多个SQL语句,...

    JDBC课件,关于JDBC使用

    - **DatabaseMetaData类**:提供了获取数据库元数据的方法,如数据库版本、表信息、列信息等。 **JDBC使用流程** 1. 加载并注册JDBC驱动(通常通过Class.forName())。 2. 通过DriverManager.getConnection()或...

    Dm7JdbcDriver16.jar Dm7JdbcDriver17.jar Dm7JdbcDriver18.jar

    JDBC是Java中用于与各种数据库进行交互的标准接口,它允许开发者使用Java语言编写数据库应用程序。JDBC驱动是连接Java应用程序与数据库之间的桥梁,通常分为四种类型:Type 1(纯Java API,依赖于数据库厂商提供的...

    JDBC开发过程与原理

    - **DatabaseMetaData接口**:提供有关数据库的信息,如支持的数据类型、系统函数等。 - **ResultSetMetaData接口**:提供关于结果集的元数据信息。 #### 四、JDBC应用步骤详解 1. **注册加载驱动**:使用`Class....

    JDBC2 Document

    - DatabaseMetaData接口提供了获取数据库信息的方法,如表结构、索引、视图等。 7. **JDBC2的优化策略** - 使用PreparedStatement而非Statement,减少SQL解析次数。 - 通过设置合适的fetchSize优化结果集加载。 ...

Global site tag (gtag.js) - Google Analytics