gpt4 book ai didi

java - 如何检查 jOOQ 中是否存在表?

转载 作者:搜寻专家 更新时间:2023-11-01 02:44:59 27 4
gpt4 key购买 nike

打开数据库连接后,我想检查数据库是否是新创建的。我正在使用 H2,如果数据库不存在,它会自动创建一个数据库。

我试过这个检查:

db.Public.PUBLIC.getTables().isEmpty()

但这会返回一个静态表列表(无需查询数据库中的模式)。

我可以编写原始 SQL 来获取表列表,但这将特定于数据库引擎。 jOOQ 中是否有通用的替代方案?

最佳答案

您不能使用:

db.Public.PUBLIC.getTables().isEmpty()

因为生成的元信息没有连接到数据库。相反,您可能想看看 DSLContext.meta() .在你的情况下,你只需写:

DSL.using(configuration).meta().getTables().isEmpty();

如果您经常运行此测试,那当然不是一种检查是否有任何表的高效方法,因为它会将所有 表提取到内存中,只是为了运行 isEmpty () 检查。我建议改为发出实际查询:

int numberOfTables =
DSL.using(configuration)
.select(count())
.from("information_schema.tables")
.where("table_schema = 'PUBLIC'")
.fetchOne(0, int.class);

future 的 jOOQ 版本(3.11 之后)将能够为您提供可在 SQL 或其他地方使用的实际对象存在谓词:

https://github.com/jOOQ/jOOQ/issues/8038

关于java - 如何检查 jOOQ 中是否存在表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24741761/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com