美文网首页
java jdbc 连接数据库查询数据库元信息

java jdbc 连接数据库查询数据库元信息

作者: riverlcn | 来源:发表于2020-04-21 20:44 被阅读0次

    所谓的元信息,就是数据库实例有多少数据库,数据库有多少张表,每张表什么字段等等信息.

    连接数据库实例

    通常情况下,我们都是连接具体的数据库,但有些时候(比如ETL配置过程中,查询数据库实例里,有多少数据库),我们需要
    连接数据库实例,不指定具体的数据库名称,连接的jdbc字符串为 jdbc:mysql://host:port,当然这种连接是支持查询数据库的,需要带上数据库,e.g. select * from dbname.table

    statement 种类及区别

    我们可以通过类似如下代码,连接数据库

    String url = "jdbc:mysql://localhost:3306/demo";
    Connection conn = DriverManager.getConnection(url, "root", "");
    

    然后通过conn.createStatement(), conn.prepareStatement(...),conn.prepareCall(...) 获取Statement,然后在执行对应的SQL,获取的Statements, PreparedStatement, CallableStatement 有什么区别?

    Class 功能 特点
    Statement 用于执行静态的SQL,即SQL中不接收参数 执行过程中,编译SQL;不可以在SQL中使用?设置值;不可以用于读写二进制数据(例如图片)
    PreparedStatement 执行预编译的SQL,在执行过程中,可以接收参数 Statement 执行快,因为只需编译一次,可以多次执行;可以使用 ? 符号替换需要的值;可用于读取二进制值;可阻止SQL注入攻击,因为特殊字符会被转义
    CallableStatment 执行数据库中的存储过程

    Read More >>

    数据库元信息

    通过数据库连接,可以获取数据库的信息

    DatabaseMetaData md = conn.getMetaData();
    

    DatabaseMetaData有如下方法可以使用:

    • 属性相关

      • 数据库名称 getDatabaseProductName()
      • 数据版本 getDatabaseProductVersion
      • 数据库是否处于只读状态 isReadOnly()
      • 数据库使用的关键字(转义使用)getSQLKeywords()
      • 数据库里面的函数(智能提醒时,使用),包括数值函数,字符串,系统,时间函数 get...Functions()
        -数据库允许的最xx值,比如列名最大长度,getMax...Length()
      • null 值排序是否在最高位 nullsAreSortedHigh(), nullsAreSortedLow(),nullsAreSortedAtEnd
    • 与数据库/数据表/相关项,返回 ResultSet,可根据文档解析获取值

      • 获取 catelog(数据库名称) getCatalogs()
      • 查询schema getSchemas()getSchemas(catalog, schemapattern)
      • 查询表 getTables(...)
      • 查询列 getColumns(...)
      • 查询主键 getPrimaryKeys(...)
      • 查询索引信息 getIndexInfo(...)
      • 查询表权限 getTablePrivileges(...)
      • 查询列权限 getColumnPrivileges(...)

    相关文章

      网友评论

          本文标题:java jdbc 连接数据库查询数据库元信息

          本文链接:https://www.haomeiwen.com/subject/bkqmihtx.html