Java 与getMetaData方法中不使用的数组混淆
我是一名新的Java程序员。我对使用带有getTable方法的数组感到困惑。只有当我将数组留空,如--String[]types={}时,此代码才有效;或使用{“表”};在…内我尝试访问RS之外的数组,但其中没有存储表名。。。。为什么我们甚至使用这个数组并在getTable方法bcz中传递它的名称来查看我们打印rs的表名。。。。我不明白这个写有{“TABLE”}的数组的用途,也不明白这个字符串是什么[]类型={“TABLE”,“VIEW”};对于如果我像String[]types={“嘿”,“你”}那样写,为什么不起作用Java 与getMetaData方法中不使用的数组混淆,java,jdbc,database-metadata,Java,Jdbc,Database Metadata,我是一名新的Java程序员。我对使用带有getTable方法的数组感到困惑。只有当我将数组留空,如--String[]types={}时,此代码才有效;或使用{“表”};在…内我尝试访问RS之外的数组,但其中没有存储表名。。。。为什么我们甚至使用这个数组并在getTable方法bcz中传递它的名称来查看我们打印rs的表名。。。。我不明白这个写有{“TABLE”}的数组的用途,也不明白这个字符串是什么[]类型={“TABLE”,“VIEW”};对于如果我像String[]types={“嘿”,“你
Java对其所有类、方法等都有丰富的文档。我强烈建议您在询问堆栈溢出问题之前阅读它,因为它通常会回答您的问题 文件说明: 参数:
[…]
types
-表类型列表,必须来自从返回的表类型列表
,包括:;null返回所有类型
换句话说,types
列是一个包含表类型的数组。如果我们看一下,它说:
检索此数据库中可用的表类型。结果是
按表类型排序
表格类型为:
表格类型
String=>表格类型。典型类型有“表”
,“视图”
,“系统表”
,“全局临时”
,“本地临时”
,
“别名”
,“同义词”
getTables(null,null,“%”,types)
时,types
的值指示要返回哪些类型的表
例如,使用null
返回所有表,使用{“TABLE”}
仅返回“real”用户表(而不是系统表),使用{“TABLE”,“VIEW”}
,您将获得所有“real”用户表和用户视图(驱动程序通常将系统视图分组在类型“system TABLE”
下),等等
当您指定
{“嘿”,“you”}
时,它不起作用的原因是这些表类型不能被JDBC驱动程序识别。这显然不是您实际运行的代码-Java中不允许使用类型名称和变量中的连字符。另外,最重要的是:您是否查阅了您尝试使用的API的文档?它可以在互联网上公开获取。
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();
}
}