JDBC连接字符串中类和方法的Ruby继承

Posted

技术标签:

【中文标题】JDBC连接字符串中类和方法的Ruby继承【英文标题】:Ruby inheritance of class and method in JDBC connection string 【发布时间】:2016-11-09 21:26:58 【问题描述】:

我有以下代码 sn-p 为各种数据库生成 JDBC 连接字符串。在这种情况下,Dash DB 和 IBM DB2。以下是我在 DB2 中用来生成连接字符串的代码结构。

def connection_creation_information
  @connection_creation_information ||= Class.new(JDBCConnectionCreationInformation) do

    private

    def connection_string_primary_params(options)
      params = []

      params << "currentSchema=#options[:schema] || options[:username]"

      params << options[:jdbc_additional_params] if options[:jdbc_additional_params]

      params
    end

    def connection_string_scheme
      'db2'
    end

    def connection_string_params(options)
      super + ';'
    end

    def primary_param_separator
      ';'
    end

    def base_separator
      ':'
    end
  end.new
end

现在,DashDB 使用 defaultSchema 定义默认模式,而在 DB2 中,它使用 currentSchema。我正在尝试尽可能减少冗余代码,所以现在,Dash DB 的代码使用 class HTDialectDashDB &lt; HTDialectDB2 从 DB2 继承并覆盖重要的一行/方法 -- connection_string_primary_params()

在我的 Dash DB 课程中,我正在执行以下操作:

def connection_creation_information
  @connection_creation_information ||= Class.new(JDBCConnectionCreationInformation) do

    private

    def connection_string_primary_params(options)
      params = []

      params << "defaultSchema=#options[:schema] || options[:username]"

      params << options[:jdbc_additional_params] if options[:jdbc_additional_params]

      params
    end

  end.new
end

但是,出现了错误,我必须实现 DB2 代码中描述的其他四种方法,我想避免这种方法,因为它只是冗余代码。

在这种情况下我该怎么办?

【问题讨论】:

无法使用 Ruby,但是 dashDB,基本上是 DB2,应该可以使用标准的 DB2 连接字符串属性。 你是对的!谢谢! 【参考方案1】:

对 Dash DB 和 DB2 都使用 currentSchema

【讨论】:

以上是关于JDBC连接字符串中类和方法的Ruby继承的主要内容,如果未能解决你的问题,请参考以下文章

python中类和对象的创建以及继承的实现

从 PHP 类和 DBMS 技术创建 PDO 连接字符串

Swift中类和结构体

Javascript 中的类和对象

python中类和继承,继承还不太了解,先贴一段代码

Ruby Dir 类和方法