博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
查询数据库布局信息
阅读量:6271 次
发布时间:2019-06-22

本文共 5224 字,大约阅读时间需要 17 分钟。

hot3.png

        JDBC是各大数据库供货商一起拟定并遵从的规范,数据库的布局信息关于JDBC来说是彻底通明的。JDBC经过元数据DatebaseMetadata、ResultSetMetaData、ParameterMetadatal来描绘有关布局信息。JadePool在给定数据库衔接的前提下,经过运用元数据获取关联的布局信息,运用DbCenter、Table、Field等Db族类完成数据库布局的 http://www.kp1234.info/linked/20130310.do 面向目标的编程。DbCenter经过完成有限多例形式中的某一个实例来办理数据库的布局信息,经过该实例的Map tableMap变量办理该数据库下一切表的布局信息,每一个Table目标经过Map fieldMap变量办理该表下的一切字段的布局信息。由此,在DbCenter的某一个实例中完好地记录了数据库的悉数关联布局信息。Db族类的树立给JDBC编程带了一场革命性的改变,成为HashMap联系数据映射技能最重要的根底,这样咱们就能够在更高更深的层次思考如何完成数据库的CRUD操作。         在JadePool中,如何完成数据库布局信息的查询?         ProcessVO类中供给了两个办法:String queryDbInfo()和String queryTableInfo(String tableName), 这两个办法能够协助咱们在编程的过程中、或在调试的过程中检查具体的数据库的布局信息或许某一个表的布局信息。下面演示一下这两个办法的作用。         以下是调用queryDbInfo()的输出成果         /*                  Catalog :             qicity         Connection driver name :    Microsoft SQL Server JDBC Driver 3.0         TABLE[0]: ad----------------------------------         FieldName :    ad_id;         IsPrimarykey :    true;         TypeName :    bigint;         DataType :    -5;         BufferLength :    8;         Position :    1;         ThisSize :    19;         Decimal :    0;         DefaultValue :    null;         Remark :    null;         NullAble :    false;         className :    java.lang.Long                  ...                   */        调用queryTableInfo("columns")的输出成果        /*                  TABLE:     columns         ------------------------------------------------------         FieldName :    columns_id;         TypeName :    bigint;         DataType :    -5;         BufferLength :    8;         Position :    1;         ThisSize :    19;         Decimal :    0;         DefaultValue :    null;         Remark :    null;         NullAble :    false;         className :    java.lang.Long                  FieldName :    title;         TypeName :    varchar;         DataType :    12;         BufferLength :    100;         Position :    4;         ThisSize :    100;         Decimal :    null;         DefaultValue :    null;         Remark :    null;         NullAble :    true;         className :    java.lang.String         ......         FieldName :    uptime;         TypeName :    datetime;         DataType :    93;         BufferLength :    16;         Position :    18;         ThisSize :    23;         Decimal :    3;         DefaultValue :    null;         Remark :    null;         NullAble :    true;         className :    java.sql.Timestamp         */         ProcessVO类中别的供给了public DbCenter getDb()办法,获取DbCenter目标,以下是DbCenter中有关数据库布局信息的有些办法。 java.lang.String getCatalog()  java.sql.Connection getCon()  java.lang.String getDriverName()  Field getField(java.lang.String tableName, java.lang.String fieldName)  java.lang.String getFieldBufferLength(java.lang.String tableName, java.lang.String fieldName)  java.lang.String getFieldDecimal(java.lang.String tableName, java.lang.String fieldName)  java.lang.String getFieldDefaultValue(java.lang.String tableName, java.lang.String fieldName)  java.util.Map getFieldMap(java.lang.String tableName, java.lang.String fieldName)  java.lang.String getFieldPosition(java.lang.String tableName, java.lang.String fieldName)  java.lang.String getFieldRegex(java.lang.String tableName, java.lang.String fieldName)  java.lang.String getFieldRemark(java.lang.String tableName, java.lang.String fieldName)  java.lang.String[] getFields(java.lang.String tableName)  java.lang.String getFieldSize(java.lang.String tableName, java.lang.String fieldName)  int getFieldSqlType(java.lang.String tableName, java.lang.String fieldName)  java.lang.String getFieldTypeClassName(java.lang.String tableName, java.lang.String fieldName)  java.lang.String getFieldTypeName(java.lang.String tableName, java.lang.String fieldName)  java.lang.String[] getKeys(java.lang.String tableName)  java.lang.String[] getKeysType(java.lang.String tableName)//主键类型 java.lang.String getSchema()  Table getTable(java.lang.String tableName)  java.util.Map getTableMap()  java.lang.String[] getTableNames()  static DbCenter instance(java.sql.Connection con, int connectionType)  boolean isExistField(java.lang.String tableName, java.lang.String fieldName)  boolean isExistKeyField(java.lang.String tableName, java.lang.String fieldName)  boolean isExistTable(java.lang.String tableName)  boolean isFieldNullable(java.lang.String tableName, java.lang.String fieldName)  boolean isFieldPrimarykey(java.lang.String tableName, java.lang.String fieldName)  以下是一个查询数据库布局信息的典范 public static void queryDb() throws SQLException {        ProcessVO pvo = new ProcessVO();        try {            String s0 = pvo.queryDbInfo();//查询完好的数据库布局信息            System.out.println(s0);            String s1 = pvo.queryTableInfo("news");//查询资讯表news的布局信息            System.out.println(s1);            Db db=pvo.getDb();            String[] tableNames=db.getTableNames();//查询数据库中包括的一切的表的称号            Table table=db.getTable("news");//查询表的称号为"news"的Table目标            Map fileds=table.getFieldMap();//查询一个表中包括的字段的调集            Field field=fileds.get("title");//查询字段名是"title"的Field字段目标                    } finally {            pvo.closeCon();        }    } 更多信息,能够参加源代码和协助文档 http://www.fp1111.info/linked/20130310.do

转载于:https://my.oschina.net/u/947963/blog/112828

你可能感兴趣的文章
phpstorm psr2样式.xml
查看>>
js 无限级分类
查看>>
umask值与Linux中文件和目录权限的关系
查看>>
python自动化开发-8
查看>>
bzoj 2127: happiness
查看>>
Python 3.5 之路 day1
查看>>
selenium使用chrome抓取自动消失弹框的方法
查看>>
实现strStr()---简单
查看>>
只有PD号的调起
查看>>
返回一个整数数组中最大子数组的和
查看>>
leetcode(二)
查看>>
利用css实现居中的方法
查看>>
Spring + Hibernate 框架
查看>>
添加浏览器的用户样式表
查看>>
LigerUI学习笔记之布局篇 layout
查看>>
LeetCode题解(二)
查看>>
Mybatis通用Mapper
查看>>
文件磁盘命令(就该这么学6章内容)
查看>>
2016-207-19 随笔
查看>>
java的double类型如何精确到一位小数?
查看>>