检索表名列表

1yjd4xko  于 2021-07-04  发布在  Java
关注(0)|答案(1)|浏览(355)

我想得到数据库中的表列表。
文件 tableList 命令说明此方法返回字符串列表,但事实并非如此。它实际上返回一个 TableList 对象。
当我跑的时候。。

r.db("test").tableList().run(conn);

我得到一个 Result<Object> 对象作为结果,其中一个条目实际上是 ArrayList 所有我想要的表名。
那么,这就是现在应该怎么做的:

Connection connection = r.connection().hostname(DEFAULT_HOSTNAME).port(DEFAULT_PORT).connect();

Object tableListObject = r.db(DEFAULT_DB_NAME).tableList().run(connection).single();

if (tableListObject instanceof Collection) {
    List<?> tableList = new ArrayList<>((Collection<?>) tableListObject);

    for(Object tableName : tableList) {
        System.out.println(tableName);
    }
}

对我来说似乎很复杂,有没有一个官方的/更好的方法?
我使用的是java驱动程序版本2.4.4。

nfs0ujit

nfs0ujit1#

你可以利用 run() 方法,该方法允许您指定返回结果的类—在本例中是字符串数组:

Connection conn = r.connection().hostname("localhost").port(32769).connect();
List<?> tables = r.db("test").tableList().run(conn, ArrayList.class).first();
if (tables != null) {
    tables.forEach(System.out::println);
}

对我来说,这会在我的测试数据库中打印以下内容:

movies
tv_shows

已更新以使用 List<?> 正如@johannes所建议的。

相关问题