【问题标题】:How to get schema name from DataSource or Connection object如何从 DataSource 或 Connection 对象中获取模式名称
【发布时间】:2019-12-07 19:26:28
【问题描述】:

我想从我的 DataSource 或 Connection 对象中获取架构名称,以便在我的 SQL 查询中动态使用它。我正在使用 DB2,并且在 DB2 驱动程序中没有实现 connection.getSchema()。

我正在使用 DataSource 来获取连接。由于 connection.getSchema() 不起作用,我尝试了下面给出的另一种方法

connection.getMetaData().getURL()

但这会返回没有如下架构信息的连接 URL:

jdbc:db2://servername:1446/DBName

但我在可嵌入容器中创建数据源时在 URL 中提供了架构信息。

jdbc:db2://servername:1446/DBName:currentSchema=mySchema

我需要获取架构名称才能在查询中使用它。有人知道如何获取架构名称。

【问题讨论】:

    标签: jdbc db2 datasource jndi


    【解决方案1】:

    试试 SQL 语句

    values current schema
    

    【讨论】:

      【解决方案2】:

      Db2BaseDataSource 有一个属性 currentSchema,以及一个 getter 和一个 setter。 还有一个属性叫做user

      setter: 
      
      db2ds.setCurrentSchema("fred");
      
      getter:
      
      String x = db2ds.getCurrentSchema() ;
      

      【讨论】:

      • 我已经使用 DI 注入了 DataSource 资源。 @Resource(lookup = "jdbc/testDB") 私有数据源数据源;并且实现不是 Db2BaseDataSource 的类型或其子类型。它的 com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource
      • @Rajeesh 那么你的问题是不正确的,所以你应该更新你的问题。检查 com.ibm.ws.rsadapter.jdbc.* 类中是否有方法可以访问本机连接及其属性。
      • 我在问题中提到我正在使用可嵌入容器,其中资源适配器类用作包装器。顺便说一句,没有可用于提供模式的类和方法。我探索了它。
      猜你喜欢
      • 2023-04-11
      • 1970-01-01
      • 2018-01-17
      • 2017-09-06
      • 1970-01-01
      • 2014-10-09
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多