zoukankan      html  css  js  c++  java
  • java jdbc 元数据使用

    1.设计

     设计的概念:

    Option

    Builder

    Factory

    Service  - Context

    Handler - Adept

    2.获取table

        static void getDataset(){
            Connection con=JdbcUtil.getConn();
            try
            {
                //检索给定目录中可用表的说明。只返回与目录、架构、表名和类型条件匹配的表说明。
                // 它们按表类型、表类别、表计划和表名称排序
                //catalog 包含目录名称的 String。对此参数提供 Null 值表示无需使用目录名称。
                //schema 包含架构名称模式的 String 值。对此参数提供 Null 值表示无需使用架构名称,对应:数据库
                //tableNamePattern 包含表名称模式的 String
                //types 含有要包含的表类型的字符串数组。Null 表示应包含所有表类型,典型的类型有"TABLE","VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY","LOCAL TEMPORARY", "ALIAS", "SYNONYM"
                String   catalog          = "day";  //对应数据库名称
                String   schemaPattern    = "*"; // mysql没有这个概念 sql server对应用户名称操作权限
                String   tableNamePattern = "student"; // 对应数据库名称
                String[] types            = {"TABLE"}; // 数据库中具体的类型 "TABLE"、"VIEW"、"SYSTEM TABLE"、"GLOBAL TEMPORARY"、"LOCAL TEMPORARY"、"ALIAS" 和 "SYNONYM"。
                DatabaseMetaData metaData = con.getMetaData();
                ResultSet ret= metaData.getTables(null,null,null,types);
                while (ret.next()) {
    
    
                    String catalogName = ret.getString(1);
                    String schemaName = ret.getString(2);
                    String tableName = ret.getString(3);
                    String columName = ret.getString(6);
                    System.out.println(tableName);
                    System.out.println(catalogName);
                    System.out.println(columName);
    
    //                ResultSetMetaData rsmd = ret.getMetaData();
    //                int count =rsmd.getColumnCount();
    //                for(int i=1;i<=count;i++)
    //                {
    //                    System.out.print(ret.getString(i)+"
    	");
    //                }
                    //System.out.println("  " + username + " " + birthday + " " + sex  + " " + address);
                }
            }catch (SQLException e){
                e.printStackTrace();
            }
        }

    3.获取colomn

        static void GetColumn(String tablename) throws SQLException {
            Connection conn = JdbcUtil.getConn();
            DatabaseMetaData metaData = conn.getMetaData();
            //
            String catalog = "ucent"; // 对应数据库名称
            String schemaPattern = "*"; // mysql没有这个概念 sql server对应用户名称操作权限
            String tableNamePattern = tablename; //
            String columnNamePattern = null;
    
            ResultSet result = metaData.getColumns(catalog, schemaPattern, tableNamePattern, columnNamePattern);
    
            while (result.next()) {
    //            String columName = result.getString(4);// 列名称
    //            String data_type = result.getString(5);// 列类型
    //            System.out.println(columName);
    //            System.out.println(data_type);
    
                String columnName = result.getString("COLUMN_NAME");
                String columnType = result.getString("TYPE_NAME");//数据类型
                String remark = result.getString("REMARKS");//数据类型
                int datasize = result.getInt("COLUMN_SIZE");//字段长度
                int digits = result.getInt("DECIMAL_DIGITS");//小数位数
                int nullable = result.getInt("NULLABLE");
    
                System.out.println(columnName+" "+columnType+" "+datasize+" "+digits + " "+ nullable +" " +remark);
    
    //            ResultSetMetaData rsmd = result.getMetaData();
    //            int count =rsmd.getColumnCount();
    //            for(int i=1;i<=count;i++)
    //            {
    //                System.out.print(result.getString(i)+"
    	");
    //            }
            }
        }
    注: result.getString(""); 中对应的fields名称如下:
    TABLE_CAT,
    TABLE_SCHEM,
    TABLE_NAME,
    COLUMN_NAME,
    DATA_TYPE,
    TYPE_NAME,
    COLUMN_SIZE,
    BUFFER_LENGTH,
    DECIMAL_DIGITS,
    NUM_PREC_RADIX,
    NULLABLE,
    REMARKS,
    COLUMN_DEF,
    SQL_DATA_TYPE,
    SQL_DATETIME_SUB,
    CHAR_OCTET_LENGTH,
    ORDINAL_POSITION,
    IS_NULLABLE,
    SCOPE_CATALOG,
    SCOPE_SCHEMA,
    SCOPE_TABLE,
    SOURCE_DATA_TYPE,
    IS_AUTOINCREMENT,
    IS_GENERATEDCOLUMN,
  • 相关阅读:
    C/C++指针精髓转载
    彻底搞定c指针系列转载
    vc根据域名获取IP地址 gethostbyname()函数
    try catch finally的执行顺序
    vc2008中mfc字符串转换待续
    C++字符串完全指引(二)转载
    vc随机字符串
    C++字符串完全指引转载
    编写c++程序的优良习惯
    ReportViewer一些技巧
  • 原文地址:https://www.cnblogs.com/leolzi/p/12552245.html
Copyright © 2011-2022 走看看