JDBC元数据操作____表的获取(MySQL)
目录
## 相关方法:.getTables()
Wrapper接口下的DatabaseMetaData接口提供了getTables()方法(参照源码1521)
.getTables(p1, p2, p3, p4)方法:
p1:数据库名
p2:模式(数据库的登录名)
p3:表名,一般为null
p4:类型标准(数组格式),一般使用"TABLE",即获取所有类型为TABLE的表
[注意]:
1. 参数p1可以直接使用数据库连接实例对象中的getCatalog()方法返回的ResultSet值填充,也可以不填/null
2. 若针对于Oracle数据库,参数p1对应数据库实例,参数p2必须大写,否则将无法获取到相应的数据
3. 参数p3若想获取所有表,可以直接设置为null,若设置为特定的表名称,则将返回该表的具体信息,相当于过滤条件
4. 参数p4备选类型:"TABLE"/"VIEW"/"SYSTEM TABLE"/"GLOBAL TEMPORARY"/
"LOCAL TEMPORARY"/"ALIAS"/"SYNONYM"
//p1使用连接对象.getCatalog()、p2指定数据库登录名方式
ResultSet tablers1 = metaData.getTables(conn.getCatalog(), "root", null, new String[]{"TABLE"});
//p1、p2 直接指定null方式
ResultSet tablers2 = metaData.getTables(null, null, null, new String[]{"TABLE"});
## 返回结果集ResultSet:
此方法返回一个ResultSet对象,其中包含了表的相关信息:共10列
TABLE_CAT String 表类别 (可为 null)
TABLE_SCHEM String 表模式 (可为 null)
TABLE_NAME String 表名称
TABLE_TYPE String 表类型
REMARKS String 表的解释性注释
TYPE_CAT String 类型的类别 (可为 null)
TYPE_SCHEM String 类型模式 (可为 null)
TYPE_NAME String 类型名称 (可为 null)
SELF_REFERENCING_COL_NAME String 有类型表指定 "identifier" 列的名称(可为 null)
REF_GENERATION String
可以通过此方法获取表中相关内容,以便后续处理操作
示例:将全大写表名转为小写存储
//准备数据元信息
Properties props =new Properties();
props.put("remarksReporting","true");
props.put("user", userName);
props.put("password", passWord);
//获取连接对象
Connection connection = java.sql.DriverManager.getConnection(url, props);
//获取元数据操作对象
DatabaseMetaData metaData = connection.getMetaData();
//获取所有表名
ResultSet tablers = metaData.getTables(null, null, null, new String[]{"TABLE"});
List<Table> list=new ArrayList<Table>();
while(tablers.next()){
String tableName=tablers.getString("TABLE_NAME");
System.out.println(tableName);
//判断 表名为全大写 ,则转换为小写
if(tableName.toUpperCase().equals(tableName))
{
table.setName(tableName.toLowerCase());
}else
{
table.setName(tableName);
}
list.add(table );
}