欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

浅谈 JDBC 元数据

程序员文章站 2024-02-27 18:52:21
java 通过jdbc获得连接以后,得到一个connection 对象,可以从这个对象获得有关数据库管理系统的各种信息,包括数据库中的各个表,表中的各个列,数据类型,触发器...

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

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

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

geturl():返回一个string类对象,代表数据库的url。

getusername():返回连接当前数据库管理系统的用户名。

isreadonly():返回一个boolean值,指示数据库是否只允许读操作。

getdatabaseproductname():返回数据库的产品名称。

getdatabaseproductversion():返回数据库的版本号。

getdrivername():返回驱动驱动程序的名称。

getdriverversion():返回驱动程序的版本号。

/**
   * 查询特定数据库中的所有表
   * @param connection 数据库连接对象
   * @return 数据库表的list
   */
  public static list<string> gettables(connection connection){
    try {
      list<string> tablelist = new arraylist<>();
      databasemetadata metadata = connection.getmetadata();
      resultset resultset = metadata.gettables(null, null, null, new string[]{"table"});
      while (resultset.next()){
        tablelist.add(resultset.getstring(3));
      }
      return tablelist;
    } catch (sqlexception e) {
      e.printstacktrace();
    }
    return null;
  }

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

getcolumnname(int column):获取指定列的名称

getcolumncount():返回当前 resultset 对象中的列数。

getcolumntypename(int column):检索指定列的数据库特定的类型名称。

getcolumndisplaysize(int column):指示指定列的最大标准宽度,以字符为单位。

isnullable(int column):指示指定列中的值是否可以为 null。

isautoincrement(int column):指示是否自动为指定列进行编号,这样这些列仍然是只读的。

总结

以上就是本文浅谈jdbc 元数据的全部内容,希望对大家有所帮助。欢迎大家参阅本站其他专题,有什么问题可以随时留言,小编会及时回复大家的。感谢大家对网站的支持!