使用 JDBC-ODBC 桥连接到 SQLServer

Posted

技术标签:

【中文标题】使用 JDBC-ODBC 桥连接到 SQLServer【英文标题】:Connecting to SQLServer using JDBC-ODBC Bridge 【发布时间】:2008-11-17 13:53:16 【问题描述】:

我正在编写一个应用程序,原型是在 mysql 上,现在正在连接到 Oracle 数据库。

要连接到 oracle 数据库(已建立表结构),我所要做的就是更改连接字符串。

连接到另一台机器上的 SQL Server DB 的格式是什么?

我已经阅读了一些教程,这些教程告诉您使用 SQL Server JDBC 适配器,但我宁愿配置应用程序,使其与数据库无关,并且只需让连接字符串指定协议等。

我看到的任何告诉您如何将桥与 SQL Server 一起使用的参考资料都需要安装 ODBC 数据源,这并不理想,因为我的应用程序可能在 Linux 或 Windows 上运行。

我没有做任何复杂的事情,只是插入。

【问题讨论】:

【参考方案1】:

您不应在生产环境中使用 JDBC-ODBC 桥。它比其他 JDBC 驱动程序慢得多,并且仅在 JDBC 驱动程序不可用时才需要。

SQL Server 有一个来自 Microsoft 的 JDBC driver。如果您使用它,那么您将获得所需的结果。

使用 ODBC 桥,您别无选择,只能安装 ODBC 驱动程序。

article 描述了连接到 SQL Server 时需要使用的连接字符串。

【讨论】:

正如 Joey Gibson 所说,您可以考虑使用 jTDS 驱动程序而不是 Microsoft 自己的 JDBC 驱动程序。【参考方案2】:

不要使用 JDBC-ODBC 桥接驱动程序。这纯粹是为了测试,而不是为了生产。您仍然可以使用针对您要连接的数据库进行优化的驱动程序使您的应用程序数据库不可知。只需将用户名、密码数据库驱动程序名称和连接字符串外部化,不要使用任何特定于 DB 的 SQL,就可以了。

要连接到 SQL Server,请使用 jTDS 驱动程序http://jtds.sourceforge.net/ 连接字符串格式如下所示:

jdbc:jtds:sqlserver://localhost/my_database

您还可以包含一些其他参数,用分号分隔,但我认为这就是所有必需的。显然,当您连接时,您需要提供用户名和密码。

【讨论】:

【参考方案3】:

现在它很容易使用工厂模式,然后加载 JDBC 驱动程序来处理给定的数据库。这种架构提供了两全其美的优势,即灵活性和效率。 这样做的一个缺点是处理动态加载的位配置/编程,但我希望如果你想让它与数据库无关,那就是要走的路。

【讨论】:

以上是关于使用 JDBC-ODBC 桥连接到 SQLServer的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Spring JdbcTemplate 连接到受密码保护的 MS Access 数据库?

如何使用一个 JDBC 驱动程序提供多个数据库的列表

JAVA中如何通过JDBC-ODBC桥来连接SQLServer数据库

从 java 连接到 MS 访问

如何从 Jython 连接到数据库

使用 JDBC-ODBC 桥时是不是使用了两个不同的驱动程序?