簡體   English   中英

JDBC連接字符串中的類和方法的Ruby繼承

[英]Ruby inheritance of class and method in JDBC connection string

我有以下代碼片段,為各種數據庫生成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的代碼繼承自DB2使用class HTDialectDashDB < HTDialectDB2並覆蓋重要的一行/方法 - 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代碼中描述的其他四種方法,我想避免這種方法,因為它只是冗余代碼。

在這種情況下我該怎么辦?

對Dash DB和DB2都使用currentSchema

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM