DatabaseMetaData和ResultSetMetaData

MetaData意即元数据,是描述其他数据的数据。

1.ResultSetMetaData

          封装了描述结果集(ResultSet)的数据,描述ResultSet对象的数据包括列名、列类型、列数、表名等信息

          ResultSet里包含一个getMetaData()方法,该方法返回该ResultSet对应的ResultSetMetaData对象。一旦获得了ResultSetMetaData对象,就可通过ResultSetMetaData提供大量的方法来返回ResultSet的描述信息,常用的方法有如下三个: 

  (1)int getColumnCount():返回该ResultSet的列数量。

  (2)String getColumnName(int column):返回指定索引的列名。

  (3)int getColumnType(int column):返回指定索引的列类型。

  (4)String getColumnTypeName(int column): 返回指定索引的列类型名称。

 

2.DatabaseMetaData

            封装了描述Database的数据,这些描述数据库的元数据包括表类型、数据库的全部数据表、表的主键、表的外键、数据库里的存储过程、某个表的全部数据列等待信息。

            JDBC提供了DatabaseMetaData来封装数据库连接对应数据库的信息,同过Connection提供的getMetaData()方法就可以获取到数据库对应的DatabaseMetaData对象。

            许多DatabaseMetaData方法以ResultSet对象的形式返回查询的信息,使用ResultSet的常规方法(例如getString和getInt)即可从这些ResultSet对象中获取数据。如果查询的信息不可用,则返回一个空的ResultSet对象。常用的方法:

    (1) ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types):  返回给定数据库中的表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用ResultSetMetaData中的getColumnName()、getColumnCount()和getColumnDisplaySize()方法获取列的名称、数量和显示大小。 然而,ResultSetMetaData并没有提供直接获取列的主键或唯一性的方法。要获取这些信息,你需要查询数据库的元数据。可以使用DatabaseMetaData接口中的getPrimaryKeys()和getIndexInfo()方法来获取主键和索引信息。 以下是一个使用ResultSetMetaDataDatabaseMetaData来获取列主键和唯一性信息的示例代码: ```java try { DatabaseMetaData dbmd = conn.getMetaData(); ResultSet rs = stmt.executeQuery("SELECT * FROM my_table"); ResultSetMetaData rsmd = rs.getMetaData(); int numColumns = rsmd.getColumnCount(); for (int i = 1; i <= numColumns; i++) { String columnName = rsmd.getColumnName(i); String columnType = rsmd.getColumnTypeName(i); int columnSize = rsmd.getColumnDisplaySize(i); boolean isPrimaryKey = false; boolean isUnique = false; ResultSet pk = dbmd.getPrimaryKeys(null, null, columnName); if (pk.next()) { isPrimaryKey = true; } ResultSet idx = dbmd.getIndexInfo(null, null, columnName, false, false); if (idx.next()) { isUnique = !idx.getBoolean("NON_UNIQUE"); } System.out.println(columnName + " (" + columnType + "(" + columnSize + "))" + " isPrimaryKey=" + isPrimaryKey + ", isUnique=" + isUnique); } } catch (SQLException e) { e.printStackTrace(); } ``` 这个代码段会遍历查询结果集中的每一列,并使用ResultSetMetaData获取列名、类型和显示大小,并使用DatabaseMetaData获取列的主键和唯一性信息。如果列是主键或唯一的,则将相应的布尔值设置为true,并在控制台上输出列的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值