`
chengyu2099
  • 浏览: 471324 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

ResultSetMetaData

    博客分类:
  • SQL
阅读更多
package javax.util.guxing;

import java.sql.*;

public class DBAccess ...{

  public static java.sql.Connection conn = null;

  private String sqlStr = "";

  public DBAccess() ...{
    try ...{
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      conn = DriverManager.getConnection("jdbc:odbc:TestDB", "admin", "");
    }catch (ClassNotFoundException ex) ...{
      System.out.println(ex.toString());
    }catch (SQLException sqlEx) ...{
      System.out.println(sqlEx.toString());
    }

  }

  public ResultSet Search() ...{
    ResultSet rset = null;
    sqlStr = "SELECT * FROM STUDENTINF ";
    Statement smt = null;
    try ...{
      smt = conn.createStatement();
      rset = smt.executeQuery(sqlStr);
    }
    catch (SQLException ex) ...{
      System.out.println("Exception:" + ex.toString());
    }
    return rset;
  }

  public void getResultSetMetaData()...{
    ResultSet rs = null;
    try ...{
      String[] tp = ...{"TABLE"};
      rs = this.Search();
      ResultSetMetaData rsmd = rs.getMetaData();
      /**//*
       获得ResultSetMeataData对象。所有方法的参数都是列的索引号,即第几列,从1开始
       */
      System.out.println("下面这些方法是ResultSetMetaData中方法");

      System.out.println("获得1列所在的Catalog名字 : " + rsmd.getCatalogName(1));

      System.out.println("获得1列对应数据类型的类 " + rsmd.getColumnClassName(1));

      System.out.println("获得该ResultSet所有列的数目 " + rsmd.getColumnCount());

      System.out.println("1列在数据库中类型的最大字符个数" + rsmd.getColumnDisplaySize(1));

      System.out.println(" 1列的默认的列的标题" + rsmd.getColumnLabel(1));

      System.out.println("1列的模式 " + rsmd.GetSchemaName(1));

      System.out.println("1列的类型,返回SqlType中的编号 " + rsmd.getColumnType(1));

      System.out.println("1列在数据库中的类型,返回类型全名" + rsmd.getColumnTypeName(1));

      System.out.println("1列类型的精确度(类型的长度): " + rsmd.getPrecision(1));

      System.out.println("1列小数点后的位数 " + rsmd.getScale(1));

      System.out.println("1列对应的模式的名称(应该用于Oracle) " + rsmd.getSchemaName(1));

      System.out.println("1列对应的表名 " + rsmd.getTableName(1));

      System.out.println("1列是否自动递增" + rsmd.isAutoIncrement(1));

      System.out.println("1列在数据库中是否为货币型" + rsmd.isCurrency(1));

      System.out.println("1列是否为空" + rsmd.isNullable(1));

      System.out.println("1列是否为只读 " + rsmd.isReadOnly(1));

      System.out.println("1列能否出现在where中 " + rsmd.isSearchable(1));

    }
    catch (SQLException ex) ...{
      ex.printStackTrace();
    }
  }

  public static void main(String args[])...{
    DBAccess dbAccess = new DBAccess();
    dbAccess.getResultSetMetaData();
  }
}





通过上面例子中的方法能够获得,ResultSet中的表的信息。ResultSetMetaData只是获得表的信息,使用DatabaseMetaData则是用来获得数据库的信息,下面介绍这个类的
使用方法。

?

DatabaseMetaData对象提供的是关于数据库的各种信息,这些信息包括:

1、??? 数据库与用户,数据库标识符以及函数与存储过程。

2、??? 数据库限制。

3、??? 数据库支持不支持的功能。

4、??? 架构、编目、表、列和视图等。

通过调用DatabaseMetaData的各种方法,程序可以动态的了解一个数据库。由于这个类中的方法非常的多那么就介绍几个常用的方法来给大家参考。

DatabaseMetaData实例的获取方法是,通过连接来获得的

Connection conn = //创建的连接。

DatabaseMetaData dbmd = Conn.getMetaData();

创建了这个实例,就可以使用他的方法来获取数据库得信息。首先是数据库中用户标识符的信息的获得,主要使用如下的方法:

getDatabaseProductName()用以获得当前数据库是什么数据库。比如oracle,access等。返回的是字符串。

getDatabaseProductVersion()获得数据库的版本。返回的字符串。

getDriverVersion()获得驱动程序的版本。返回字符串。

supportsResultSetType(ResultSet.resultype)是判定是否支持这种结果集的类型。比如参数如果是Result.TYPE_FORWARD_ONLY,那就是判定是否支持,只能先前移动结果集
的指针。返回值为boolean,true表示支持。

上面介绍的只是几个常用的方法,这个类中还有很多方法,可以到jdk的帮助文档中去查看类java.sql.DatabaseMetaData。

这个类中还有一个比较常用的方法就是获得表的信息。使用的方法是:

getTables(String catalog,String schema,String tableName,String[] types),

这个方法带有四个参数,他们表示的含义如下:

String catalog——要获得表所在的编目。串“”””意味着没有任何编目,Null表示所有编目。

String schema——要获得表所在的模式。串“”””意味着没有任何模式,Null表示所有模式。该参数可以包含单字符的通配符(“_”),也可以包含多字符的通配符(“%”)。

String tableName——指出要返回表名与该参数匹配的那些表,该参数可以包含单字符的通配符(“_”),也可以包含多字符的通配符(“%”)。

String types——一个指出返回何种表的数组。可能的数组项是:”TABLE”,”VIEW”,

”SYSTEM TABLE”,”GLOBAL TEMPORARY”,”LOCAL TEMPORARY”,”ALIAS”,

“SYSNONYM”。

通过getTables()方法返回一个表的信息的结果集。这个结果集包括字段有:TABLE_CAT表所在的编目。TABLE_SCHEM表所在的模式,TABLE_NAME表的名称。TABLE_TYPE标的
类型。REMARKS一段解释性的备注。通过这些字段可以完成表的信息的获取。

还有两个方法一个是获得列getColumns(String catalog,String schama,String tablename,String columnPattern)一个是获得关键字的方法
getPrimaryKeys(String?catalog, String?schema, String?table)这两个方法中的参数的含义和上面的介绍的是相同的。凡是pattern的都是可以用通配符匹配的。
getColums()返回的是结果集,这个结果集包括了列的所有信息,类型,名称,可否为空等。getPrimaryKey()则是返回了某个表的关键字的结果集。

通过getTables(),getColumns(),getPrimaryKeys()就可以完成表的反向设计了。主要步骤如下:

1、? 通过getTables()获得数据库中表的信息。

2、? 对于每个表使用,getColumns(),getPrimaryKeys()获得相应的列名,类型,限制条件,关键字等。

3、? 通过1,2获得信息可以生成相应的建表的SQL语句。

??? 通过上述三步完成反向设计表的过程。

DatabaseMetaData所涉及的常用功能主要是上面这些,如果我有哪些地方理解的有问题,请大家指出,谢谢。

?


通过上面例子中的方法能够获得,ResultSet中的表的信息。ResultSetMetaData只是获得表的信息,使用DatabaseMetaData则是用来获得数据库的信息,下面介绍这个类的
使用方法。

?

DatabaseMetaData对象提供的是关于数据库的各种信息,这些信息包括:

1、??? 数据库与用户,数据库标识符以及函数与存储过程。

2、??? 数据库限制。

3、??? 数据库支持不支持的功能。

4、??? 架构、编目、表、列和视图等。

通过调用DatabaseMetaData的各种方法,程序可以动态的了解一个数据库。由于这个类中的方法非常的多那么就介绍几个常用的方法来给大家参考。

DatabaseMetaData实例的获取方法是,通过连接来获得的

Connection conn = //创建的连接。

DatabaseMetaData dbmd = Conn.getMetaData();

创建了这个实例,就可以使用他的方法来获取数据库得信息。首先是数据库中用户标识符的信息的获得,主要使用如下的方法:

getDatabaseProductName()用以获得当前数据库是什么数据库。比如oracle,access等。返回的是字符串。

getDatabaseProductVersion()获得数据库的版本。返回的字符串。

getDriverVersion()获得驱动程序的版本。返回字符串。

supportsResultSetType(ResultSet.resultype)是判定是否支持这种结果集的类型。比如参数如果是Result.TYPE_FORWARD_ONLY,那就是判定是否支持,只能先前移动结果集
的指针。返回值为boolean,true表示支持。

上面介绍的只是几个常用的方法,这个类中还有很多方法,可以到jdk的帮助文档中去查看类java.sql.DatabaseMetaData。

这个类中还有一个比较常用的方法就是获得表的信息。使用的方法是:

getTables(String catalog,String schema,String tableName,String[] types),

这个方法带有四个参数,他们表示的含义如下:

String catalog——要获得表所在的编目。串“”””意味着没有任何编目,Null表示所有编目。

String schema——要获得表所在的模式。串“”””意味着没有任何模式,Null表示所有模式。该参数可以包含单字符的通配符(“_”),也可以包含多字符的通配符(“%”)。

String tableName——指出要返回表名与该参数匹配的那些表,该参数可以包含单字符的通配符(“_”),也可以包含多字符的通配符(“%”)。

String types——一个指出返回何种表的数组。可能的数组项是:”TABLE”,”VIEW”,

”SYSTEM TABLE”,”GLOBAL TEMPORARY”,”LOCAL TEMPORARY”,”ALIAS”,

“SYSNONYM”。

通过getTables()方法返回一个表的信息的结果集。这个结果集包括字段有:TABLE_CAT表所在的编目。TABLE_SCHEM表所在的模式,TABLE_NAME表的名称。TABLE_TYPE标的
类型。REMARKS一段解释性的备注。通过这些字段可以完成表的信息的获取。

还有两个方法一个是获得列getColumns(String catalog,String schama,String tablename,String columnPattern)一个是获得关键字的方法
getPrimaryKeys(String?catalog, String?schema, String?table)这两个方法中的参数的含义和上面的介绍的是相同的。凡是pattern的都是可以用通配符匹配的。
getColums()返回的是结果集,这个结果集包括了列的所有信息,类型,名称,可否为空等。getPrimaryKey()则是返回了某个表的关键字的结果集。

通过getTables(),getColumns(),getPrimaryKeys()就可以完成表的反向设计了。主要步骤如下:

1、? 通过getTables()获得数据库中表的信息。

2、? 对于每个表使用,getColumns(),getPrimaryKeys()获得相应的列名,类型,限制条件,关键字等。

3、? 通过1,2获得信息可以生成相应的建表的SQL语句。

??? 通过上述三步完成反向设计表的过程。

分享到:
评论

相关推荐

    Java-JDBC【之】数据类型、封装JDBCUtil、封装通用增删改、ResultSet与ResultSetMetaData

    Java-JDBC【之】数据类型、封装JDBCUtil、封装通用增删改、ResultSet与ResultSetMetaData、查询结果集映射Map与ListMap 1.数据类型 2.封装通用增删改 2.1.封装JDBCUtil 2.2.封装Dao通用增删改 2.3.测试 3.ResultSet...

    获得结果集的字段名称_ResultSet的属性要调用ResultSetMetaData的方法

    获得结果集的字段名称_ResultSet的属性要调用ResultSetMetaData的方法 在Java中,获取结果集的字段名称可以通过调用ResultSetMetaData的方法来实现。ResultSetMetaData是一个公共接口,提供了关于ResultSet对象中列...

    java读取table列名

    `ResultSetMetaData`是Java数据库连接(JDBC)API中的一个关键类,它提供了关于`ResultSet`对象列的信息,包括列的数量、类型、是否可更新以及列的名称。在本文中,我们将深入探讨如何使用`ResultSetMetaData`来获取...

    数据库工具类DatabaseUtil.java

    import java.sql.*; import java.util.*; /** * * Title: 数据库工具类 ... * Description: 将大部分的数据库操作放入这个类中, 包括数据库连接的建立, 自动释放等. ... * All database resources created by this ...

    JAVA100例之实例57 结果集元数据

    在Java编程语言中,结果集元数据(ResultSetMetaData)是处理数据库查询结果的关键部分。它提供了关于查询结果列的信息,如列的数量、名称、类型以及是否允许为空等。本实例57将深入探讨如何利用ResultSetMetaData...

    ResultSet的属性

    例如,你可以通过ResultSetMetaData来获取列的数量、列的名称、列的类型、列的宽度、是否可以用于WHERE子句等等。这些信息对于正确地解析和使用查询结果非常有用。 以下是一些重要的ResultSetMetaData方法及其功能...

    JDBC-用元数据将结果集封装为List对象[归类].pdf

    在Java的JDBC(Java Database Connectivity)中,`DatabaseMetaData`和`ResultSetMetaData`是两个非常重要的接口,它们提供了获取数据库元数据和结果集元数据的功能。元数据是指关于数据的数据,例如数据库的表结构...

    java对数据库操作常用对象及方法整合[归类].pdf

    Java 语言中经常使用的数据库操作对象和方法整合,主要包括 DatabaseMetaData、ResultSet、ResultSetMetaData 等对象。 DatabaseMetaData 对象 DatabaseMetaData 对象提供了关于整个数据库的信息,包括表名、表的...

    表字段描述依赖包

    ORMlite的核心功能之一就是通过ResultSetMetaData来获取和处理数据库表的字段描述。ResultSetMetaData是在执行SQL查询后返回的结果集上提供元数据信息的接口,包括列的数量、类型、是否可修改等。在ORMlite中,这个...

    ResultSet 转为listmap

    2. ResultSetMetaData:ResultSetMetaData 是 ResultSet 对象的元数据,提供了查询结果集的元数据信息,如列名、列类型等。 3. getColumnCount():getColumnCount() 方法返回查询结果集的列数。 4. getColumnName()...

    Java的Jtable、从数据库取数据显示在表格中.pdf

    Java 中使用 JTable 显示数据库数据 Java 中使用 JTable 显示数据库数据是一个...使用 Java 的 JTable 显示数据库数据需要连接到数据库,读取数据,使用 ResultSetMetaData 获取列信息,并将数据显示在 JTable 中。

    java如何获得数据库表中各字段的字段名

    然后利用该结果集的`getMetaData()`方法得到一个`ResultSetMetaData`实例,从而进一步获取字段名称等相关信息。 #### 示例代码解析 以下是对给定示例代码的详细解释: 1. **加载驱动程序**: ```java String ...

    各种数据库的驱动程序Driver

    5. **ResultSetMetaData**: ResultSetMetaData 是JDBC API中的一个接口,用于获取ResultSet对象列的信息,如列的数量、列的名字、列的数据类型等。这有助于程序动态地处理结果集,增强代码的灵活性。 6. **数据库...

    JDBCDriver最齐驱动包

    ResultSetMetaData是对这个结果集的元数据的描述,包含列的数量、名称、类型等信息。开发者可以通过ResultSetMetaData获取列的详细信息,方便在程序中动态处理结果集。 6. **配置对象的属性**:在使用JDBC驱动和...

    java数据库表的调用

    本文将详细介绍如何利用`JScrollPane`、`JTable`、`Vector`、`AbstractTableModel`以及`ResultSetMetaData`等组件和技术,将数据库中的表内容显示到窗口中。 #### 一、导入必要的包 首先,我们需要导入以下包: `...

    server连接

    通过使用 `PreparedStatement` 来提高安全性与性能,同时利用 `ResultSet` 和 `ResultSetMetaData` 处理查询结果,最终将数据封装为 `Map` 类型列表返回。这些步骤是处理数据库操作的基本流程,在实际开发中非常常见...

    jtdsJDBC Driver

    JTDS完全与JDBC 3.0兼容,支持只向前的,和可滚动/可更新的结果集(ResultSets)中并行(完全独立)语句,并且可实施所有databasemetadata和resultsetmetadata方法。 文件有说明spring+hibernate+c3p0+jtds的配置

    java导出数据.pdf

    接着,程序使用 ResultSetMetaData 对象来获取数据的元数据,并使用 HSSFRow 和 HSSFCell 对象来将数据写入到 Excel 文件中。 在将数据写入到 Excel 文件中的过程中,程序使用了多种技术来处理不同的数据类型。例如...

    Native SQL查询 (使用SQLQuery).doc

    这时不再使用 ResultSetMetadata,而是明确的将 ID, NAME 和 BIRTHDATE 按照 Long, String 和 Short 类型从 resultset 中取出。 实体查询(Entity queries) ------------------------- 上面的查询都是返回标量值...

    JDBC操作 连接MYSQL数据库.docx

    `displayResultSet()`方法首先获取`ResultSet`的元数据(`ResultSetMetaData`),这包含了列的名称和其他信息。然后,它遍历`ResultSet`,将每一行数据转化为`Vector`对象,这些`Vector`对象随后被添加到`JTable`中...

Global site tag (gtag.js) - Google Analytics