指定火鸟连接方言,而不是数据库方言



我有一个使用方言1的Firebird数据库。一些旧的德尔福应用程序必须使用方言 1 来使用它,否则某些查询将失败。问题是,我正在使用 ColdFusion 与我们的 Web 应用程序的数据库进行通信,它需要方言 3。

有什么方法可以在客户端连接级别设置方言吗? 这样我的 ColdFusion 数据源就可以使用 Dialect 3,而旧的 Delphi 应用程序仍然可以使用 Dialect 1?

我尝试使用以下方法,但它根本不起作用。

jdbc:firebirdsql:localhost/3050:C:fbdbmaster25.fdb?sql_dialect=3

当我这样做时,它完全将方言更改为方言 3,这破坏了德尔福应用程序。

jdbc:firebirdsql:localhost/3050:C:fbdbmaster25.fdb?set_sql_dialect=3

有什么想法吗?我正在使用 Jaybird JDBC 驱动程序从 ColdFusion 进行连接。

更新

问题是Firebird 3.0看起来情况发生了变化。 在方言 1 下的 2.5 数据库中,我们有将参数声明为 date 的存储过程。 在方言 1 下的 Firebird 3.0 中,这些存储过程会引发错误,指出

数据库 SQL 方言 1 不支持引用 DATE 数据类型

当我们切换到方言 3 时,一切正常 - 但随后我们的 Delphi 应用程序中断,因为其中许多应用程序都有直接查询,它选择日期类型列,Firebird 3.0 现在将其视为时间戳。 因此,我们现在得到的不是 2018-06-25,而是 2018-06-25 23:59:59。

如果有一些方法可以让我进行设置,以便我们的 Delphi 应用程序可以作为方言 1 进行通信,同时也允许 ColdFusion 数据源作为方言 3 进行通信,那将是理想的。

这可能吗?

要回答标题所隐含的问题(不解决问题正文的细节(:您可以使用连接属性dialect(别名sqlDialectsql_dialect(指定连接方言,该属性采用值 1(传统方言 1(、2(桥接方言(和 3(当前方言(。从技术上讲,0(基于数据库方言自动选择(也可以工作,但在某些情况下,即使数据库是方言 1,这也会导致方言 3 被使用。默认值为方言 3。

以上适用于 Jaybird 3.0.x,使用 Jaybird 2.2.x 及更早版本的方言选择将应用指定方言和方言 3 的组合,因此应视为已损坏。

相关内容

  • 没有找到相关文章

最新更新