gpt4 book ai didi

database - 如何使用 jdbc 从 Oracle 中的结果集中获取架构名称?

转载 作者:搜寻专家 更新时间:2023-10-30 19:49:40 24 4
gpt4 key购买 nike

我想在 Oracle 数据库上运行查询,对于结果集中的每一列,我想知道该列来自的架构。我尝试了以下方法:

ResultSetMetaData rsMetadata = rs.getMetaData();
String schemaName = rsMetadata.getSchemaName(1)

但是,这会返回一个空字符串。是否有任何变通方法来获取架构名称?

编辑以回应 OMG Ponies:

我们正在开发的工具从数据库中获取数据并分析数据,为给定问题找到信息量最大的子集。然后我们创建一个查询,该查询仅返回对给定问题提供信息的行。例如,如果我们有一个客户数据库,想知道哪些客户最有可能停止服务,我们的工具可以创建一个查询,返回 5% 的客户记录,然后可以通过高性能分析算法运行这些记录。好处是我们只对数据的一个子集进行分析,这当然会节省时间。事实证明,高性能分析算法现在工作得更好,因为第一步基本上是从我们的数据中滤除噪音。

因此,为了响应 OMG Ponies,用户将数据库连接信息和查询指定为我们工具的输入。因为他们可以指定他们喜欢的任何查询,所以用户可以连接到模式 foo,然后运行以下查询:

SELECT* FROM bar.customer;

如果由于某种原因眼睛颜色和性别是人们停止服务的预测因素,那么我们系统生成的结果查询可能如下所示:

SELECT * FROM bar.customer WHERE bar.customer.eye_color='blue' 
AND bar.customer.gender='M'

最好知道结果集中每一列的架构,这样我们就可以确保我们的查询能够正确运行。我们可以假设模式与数据库连接中使用的模式相同,并且在 99% 的情况下应该没问题。我只是担心 1% 的时间用户可能会做一些意想不到的事情,比如针对另一个模式运行查询。

最佳答案

根据旧 Oracle code sample :

OracleResultSetMetaData interface does not implement the getSchemaName() and getTableName() methods because underlying protocol does not make this feasible.

这对我来说意味着 ResultSetMetaData 也不会有 Oracle 的那些方法,至少在使用 Oracle 驱动程序时是这样。 (我尝试使用 OCI 驱动程序来查看这是否有所作为,但显然没有)。

有一个 WebLogic 8 document这表明它可以完成,但是 type 4 驱动程序在以后的版本中已被弃用。因此,您仍有可能找到支持针对 Oracle 的 getSchemaName() 的第三方驱动程序,但这似乎不太可能。

关于database - 如何使用 jdbc 从 Oracle 中的结果集中获取架构名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4082003/

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