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 < 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继承的主要内容,如果未能解决你的问题,请参考以下文章