设为首页 加入收藏

TOP

反射+枚举+freemarker,自动生成实体类,自动建表建索引 之建表建索引,注解和DatabaseMetaData 获取信息 (二)
2014-11-24 11:54:45 】 浏览:2497
Tags:反射 枚举 freemarker 自动生成 实体 自动 索引 注解 DatabaseMetaData 获取 信息
tableName_ = rs.getString("TABLE_NAME");//表名
String columnName = rs.getString("COLUMN_NAME");//列名
}


//索引信息
/**
* 每个索引列描述都有以下列:
*
* TABLE_CAT String => 表类别(可为 null)
* TABLE_SCHEM String => 表模式(可为 null)
* TABLE_NAME String => 表名称
* NON_UNIQUE boolean => 索引值是否可以不唯一。TYPE 为 tableIndexStatistic 时索引值为 false
* INDEX_QUALIFIER String => 索引类别(可为 null);TYPE 为 tableIndexStatistic 时索引类别为 null
* INDEX_NAME String => 索引名称;TYPE 为 tableIndexStatistic 时索引名称为 null
* TYPE short => 索引类型:
* tableIndexStatistic - 此标识与表的索引描述一起返回的表统计信息
* tableIndexClustered - 此为集群索引
* tableIndexHashed - 此为散列索引
* tableIndexOther - 此为某种其他样式的索引
* ORDINAL_POSITION short => 索引中的列序列号;TYPE 为 tableIndexStatistic 时该序列号为零
* COLUMN_NAME String => 列名称;TYPE 为 tableIndexStatistic 时列名称为 null
* ASC_OR_DESC String => 列排序序列,"A" => 升序,"D" => 降序,如果排序序列不受支持,可能为 null;TYPE 为 tableIndexStatistic 时排序序列为 null
* CARDINALITY int => TYPE 为 tableIndexStatistic 时,它是表中的行数;否则,它是索引中唯一值的数量。
* PAGES int => TYPE 为 tableIndexStatisic 时,它是用于表的页数,否则它是用于当前索引的页数。
* FILTER_CONDITION String => 过滤器条件,如果有的话。(可能为 null)
*
*/
ResultSet rs = dbMetaData.getIndexInfo(null, schemaName, tableName, true, true);
while (rs.next()){
boolean nonUnique = rs.getBoolean("NON_UNIQUE");//非唯一索引(Can index values be non-unique. false when TYPE is tableIndexStatistic )
String indexQualifier = rs.getString("INDEX_QUALIFIER");//索引目录(可能为空)
String indexName = rs.getString("INDEX_NAME");//索引的名称
short type = rs.getShort("TYPE");//索引类型
String columnName = rs.getString("COLUMN_NAME");//列名
String ascOrDesc = rs.getString("ASC_OR_DESC");//列排序顺序:升序还是降序
}


// 还有主键信息,外键信息,视图信息等就不一一列举了。。。。

// 现获取DatabaseMetaData
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
Connection con = DriverManager.getConnection(url, user, password);
DatabaseMetaData dbMetaData = con.getMetaData();

// 表信息
/**
* 每个表描述都有以下列:
* TABLE_CAT String => 表类别(可为 null)
* TABLE_SCHEM String => 表模式(可为 null)
* TABLE_NAME String => 表名称
* TABLE_TYPE String => 表类型。典型的类型是 "TABLE"、"VIEW"、"SYSTEM TABLE"、"GLOBAL TEMPORARY"、"LOCAL TEMPORARY"、"ALIAS" 和 "SYNONYM"。
* REMARKS String => 表的解释性注释
* TYPE_CAT String => 类型的类别(可为 null)
* TYPE_SCHEM String => 类型模式(可为 null)
* TYPE_NAME String => 类型名称(可为 null)
* SELF_REFERENCING_COL_NAME String => 有类型表的指定 "identifier" 列的名称(可为 null)
* REF_GENERATION String => 指定在 SELF_REFERENCING_COL_NAME 中创建值的方式。这些值为 "SYSTEM"、"USER" 和 "DERIVED"。(可能为 null)
*
*/
// table type. Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
String[] types = { "TABLE" };
ResultSet rs = dbMetaData.getTables(null, schemaName, "%", types);
while (rs.next()) {
String tableName = rs.getString("TABLE_NAME"); //表名
String tableType = rs.getString("TABLE_TYPE"); //表类型
String remarks = rs.getString("REMARKS"); //表备注
System.out.println(tableName + "-" + tableType + "-" + remarks);
}


//获得表或视图中的所有列信息
/**
* 每个列描述都有以下列:
*
* TABLE_CAT String => 表类别(可为 null)
* TABLE_SCHEM String => 表模式(可为 null)
* TABLE_NAME String => 表名称
* COLUMN_NAME String => 列名称
* DATA_TYPE int => 来自 java.sql.Types 的 SQL 类型
* TYPE_NAME String => 数据源依赖的类型名称,对于 UDT,该类型名称是完全限定的
* COLUMN_SIZE int => 列的大小。
* BUFFER_LENGTH 未被使用。
* DECIMAL_DIGITS int => 小数部

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 2/11/11
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇java 中调用C的函数 下一篇Java基础01 从HelloWorld到面向对..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目