java与我们在getMetaData方法中不使用的数组相混淆
我是一名新的Java程序员。我对使用带有getTable方法的数组感到困惑。只有当我将数组留空,比如--String[]types={},这段代码才有效;或者用{TABLE};在…内我试图访问RS之外的数组,但数组中没有存储表名。。。。为什么我们甚至要使用这个数组并在getTable方法bcz中传递它的名称来查看我们打印的表名。。。。我不明白这个写有{“TABLE”}的数组的用途,也不明白这个字符串[]types={“TABLE”,“VIEW”}是什么;对于如果我像String[]types={hey”,“you”}那样写,为什么不起作用
public void getDatabaseMetaData(){
try {
DatabaseMetaData md = conn.getMetaData();
String[] types = {"TABLE"};
//OR using String[] types = {"TABLE", "VIEW"};
Result-set rs = md.get-tables(null, null, "%", types);
while (rs.next()) {
System.out.println(rs.getString("TABLE_NAME"));
}
}
catch (SQLException e) {
e.printStackTrace();
}
}
# 1 楼答案
Java有大量关于所有类、方法等的文档。我强烈建议您在询问堆栈溢出问题之前阅读这些文档,因为它通常会回答您的问题
文件^{} 说:
换句话说,} ,它说:
types
列是一个包含表类型的数组。如果我们看一下^{换句话说,当您使用
getTables(null, null, "%", types)
时,types
的值指示您希望返回哪些类型的表例如,使用
null
返回所有表,使用{ "TABLE" }
只返回“真实”用户表(而不是系统表),使用{ "TABLE", "VIEW" }
,您将获得所有“真实”用户表和用户视图(驱动程序通常将系统视图分组在"SYSTEM TABLE"
类型下),等等当您指定
{ "hey", "you" }
时,它不起作用的原因是,这些表类型不能被JDBC驱动程序识别