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,