我有以下代码片段,为各种数据库生成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 < 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代码中描述的其他四种方法,我想避免错误,因为它只是冗余代码。
在这种情况下我该怎么办?
答案 0 :(得分:0)
对Dash DB和DB2都使用currentSchema
。