有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    Java有大量关于所有类、方法等的文档。我强烈建议您在询问堆栈溢出问题之前阅读这些文档,因为它通常会回答您的问题

    文件^{}说:

    Parameters:
    [..]
      types - a list of table types, which must be from the list of table types returned from getTableTypes(),to include; null returns all types

    换句话说,types列是一个包含表类型的数组。如果我们看一下^{},它说:

    Retrieves the table types available in this database. The results are ordered by table type.

    The table type is:

    1. TABLE_TYPE String => table type. Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM".

    换句话说,当您使用getTables(null, null, "%", types)时,types的值指示您希望返回哪些类型的表

    例如,使用null返回所有表,使用{ "TABLE" }只返回“真实”用户表(而不是系统表),使用{ "TABLE", "VIEW" },您将获得所有“真实”用户表和用户视图(驱动程序通常将系统视图分组在"SYSTEM TABLE"类型下),等等

    当您指定{ "hey", "you" }时,它不起作用的原因是,这些表类型不能被JDBC驱动程序识别