JDBC中MetaData对象使用与详解

简介: JDBC中MetaData对象使用与详解

本文我们尝试了解一下java.sql下的那些MetaData对象比如ResultSetMetaData、RowSetMetaData、RowSetMetaDataImpl、DatabaseMetaData以及ParameterMetaData对象。

【1】ResultSetMetaData


ResultSetMetaDataResultSetMetaData rsmd = resultSet.getMetaData(); 描述结果集的元数据,可以得到结果集中的基本信息 结果集中有那些列,列名,列的别名等等。


可用于获取关于 ResultSet 对象中列的类型和属性信息的对象

getColumnName(int column):获取指定列的名称
getColumnCount():返回当前 ResultSet 对象中的列数。 
getColumnTypeName(int column):检索指定列的数据库特定的类型名称。 
getColumnDisplaySize(int column):指示指定列的最大标准宽度,以字符为单位。 
isNullable(int column):指示指定列中的值是否可以为 null。 
isAutoIncrement(int column):指示是否自动为指定列进行编号,这样这些列仍然是只读的。 

实例代码如下:

@Test
public void testResultSetMetaData() throws Exception {
  Connection connection = null;
  PreparedStatement pStatement = null;
  ResultSet resultSet = null;
  try {
    connection = JDBCToolss.getConnection();
    String sql = "select id id,name name,address address,phone phone from customers ";
    pStatement = connection.prepareStatement(sql);
    resultSet = pStatement.executeQuery();
    ResultSetMetaData rsmd = resultSet.getMetaData();
    /* 得到数据库列的数量 */
    int count = rsmd.getColumnCount();
    System.out.println(count);
    /* 得到列名 */
    while (resultSet.next()) {
      for (int i = 0; i < count; i++) {
        /* 得到列名 */
        String columnName = rsmd.getColumnName(i + 1);
        /* 得到列别名 */
        String columnLabel = rsmd.getColumnLabel(i + 1);
        /* 得到列值 */
        Object columnValue = resultSet.getObject(columnLabel);        
      }
    }
  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    JDBCToolss.release(resultSet, pStatement, connection);
  }
}


【2】DatabaseMetaData


Java 通过JDBC获得连接以后,得到一个Connection 对象,可以从这个对象获得有关数据库管理系统的各种信息,包括数据库中的各个表,表中的各个列,数据类型,触发器,存储过程等各方面的信息。根据这些信息,JDBC可以访问一个实现事先并不了解的数据库。

获取这些信息的方法都是在DatabaseMetaData类的对象上实现的,而DataBaseMetaData对象是在Connection对象上获得的。

Connection connection=getConnection();
DatabaseMetaData metaData = connection.getMetaData();

DatabaseMetaDataDatabaseMetaData data = connection.getMetaData();描述数据库的元数据对象


DatabaseMetaData 类中提供了许多方法用于获得数据源的各种信息,通过这些方法可以非常详细的了解数据库的信息:

getURL():返回一个String类对象,代表数据库的URL。
getUserName():返回连接当前数据库管理系统的用户名。
isReadOnly():返回一个boolean值,指示数据库是否只允许读操作。
getDatabaseProductName():返回数据库的产品名称。
getDatabaseProductVersion():返回数据库的版本号。
getDriverName():返回驱动驱动程序的名称。
getDriverVersion():返回驱动程序的版本号。

实例代码如下:

@Test
public void testDataBaseMetaData() throws Exception {
  Connection connection = null;
  ResultSet resultSet = null;
  try {
    connection = JDBCToolss.getConnection();
    DatabaseMetaData data = connection.getMetaData();
    // data.getVersionColumns(catalog, schema, table);
    System.out.println(data.getClientInfoProperties());
    /* 得到mysql中有哪些数据库 */
    resultSet = data.getCatalogs();
    while (resultSet.next()) {
      System.out.println(resultSet.getString(1));
    }
    /* 得到数据库的版本号 */
    int version = data.getDatabaseMajorVersion();
    System.out.println("version:" + version);
    /* 得到链接数据库的用户名 */
    String userName = data.getUserName();
    System.out.println("数据库连接名username:" + userName);
    data.getDefaultTransactionIsolation();
  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    JDBCToolss.release(resultSet, null, connection);
  }
}


目录
相关文章
|
SQL 存储 Java
如何模拟MyBatis对象映射赋值的过程,以及如何通过这种方式来简化我们的JDBC开发工作?
如何模拟MyBatis对象映射赋值的过程,以及如何通过这种方式来简化我们的JDBC开发工作?
102 0
|
SQL Oracle Java
Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据
Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据
405 0
|
SQL Java 关系型数据库
JDBC系列-详解各个对象
JDBC系列-详解各个对象
83 0
|
SQL Oracle Java
|
Java 大数据 数据库连接
【大数据系列之JDBC】(八):使用PreparedStatement获取结果集对象
【大数据系列之JDBC】(八):使用PreparedStatement获取结果集对象
380 0
|
Oracle Java 关系型数据库
JDBC获取数据库列名-关于 ResultSet 对象中列的类型和属性信息
JDBC获取数据库列名-关于 ResultSet 对象中列的类型和属性信息
194 0
|
SQL 存储 Java
JDBC之通过ResultSet对象对结果集进行处理
JDBC之通过ResultSet对象对结果集进行处理
|
存储 关系型数据库 Java
JDBC连接执行 MySQL 存储过程报权限错误:User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted,
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。
1825 0
|
SQL Java 数据库连接
JDBC游标的使用----ResultSet对象
了解游标类型     关系数据库中的操作会对整个行集起作用。由 SELECT 语句返回的行集包括满足该语句的 WHERE 子句中条件的所有行。
2356 0