【问题标题】:Java - connecting to a SQL Server database on LinuxJava - 在 Linux 上连接到 SQL Server 数据库
【发布时间】:2014-01-24 14:03:09
【问题描述】:

我已经下载并导入了我的项目this JDBC 驱动程序,据称它支持 Linux(尽管仅在 SUSE Linux 上测试过)。

我想要的是能够在 Linux 上通过 Java 使用 .mdf 数据库。查询显然需要一些东西来运行,而不仅仅是连接到数据库——如果我理解正确的话。 我在 SO 上找到了一个 question,它似乎包含有关我的问题的宝贵信息。

所以我在考虑 FreeTDS + JDBC 组合。查询会按预期执行,还是我必须在 Windows 上本地使用数据库?后者基本上粉碎了 Java 提供的操作系统不可知论,如果可能的话,我希望避免。

数据库本身并没有什么花哨的东西,只有几张表——毕竟这只是一个学校作业。 如果需要,我会提供更多信息。

【问题讨论】:

  • 如果你的项目是java并且你使用的是JDBC驱动,为什么需要FreeTDS?
  • @kosta 可以单独使用 JDBC 驱动来执行查询吗?如果是这样,我会这样尝试。但是我该如何连接和配置服务器 - 端口等?
  • 您真的在使用 SQL Server(在另一台 Windows 机器上)吗?如果是这样,您可以将驱动程序注册为: Class.forName(...);并将您的 jdbc url 构造为: jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
  • @Venom 我认为你应该澄清你到底想要什么——你的问题清楚地说明了What I want is to be able to use a .mdf database through Java on Linux. 但你对 kosta 问题的回答似乎表明你实际上想要连接到 SQLServer 数据库服务器。由于这些是不同解决方案的不同问题,您应该明确您真正需要哪一个...
  • @fvu 正如我所提到的,这只是一个学校作业,这对我来说都是全新的(不是一般的编程,只是 Java 及其原理)。我有一个 .mdf 数据库(使用 T-SQL 在 SQL Management Studio 中创建)及其 .ldf 日志文件(我猜它是必需的),它们将在使用 MS 开发的 JDBC 驱动程序或替代驱动程序的 Java 应用程序中使用.我不知道的是驱动程序本身就足以执行查询。 kosta 说应该是,但我对此持怀疑态度。我什至不知道将上述文件放在哪里,因为 SQL Server 将它们存储在自己的默认路径中。

标签: java sql-server linux jdbc freetds


【解决方案1】:

mdf 文件可以是旧的(基于JET 的)Microsoft Access 数据库文件,因此用于 SQL Server 的 JDBC 驱动程序,一个完全不同的产品,对您没有多大帮助。在 SO 上,有几篇文章解释了如何使用 JDBC-ODBC 桥通过 ODBC 驱动程序绕道访问 Access 数据库,但由于您特别提到 Linux,这对您没有帮助。

我看到了两种可能的(免费)方法:

  1. 使用开源的jackcess包,允许Java程序跨平台打开、读取和写入MS Access数据库
  2. 将 MSAccess 数据库文件的内容传输到某些具有本机 Java 驱动程序的数据库(即,其中大多数不是 MS Access)。

然而,一个 mdf 文件也可以是一个 SQLServer 数据库,但在 Linux 下使用该数据库也将是相当棘手的,因为您需要一些版本的 SQL Server 才能打开它 - 有关详细信息,请参阅 here关于如何将这样的 mdf 文件“附加”到已安装的 SQLServer 实例 - 但据我所知,没有在 Linux 下运行的 SQL Server 版本。因此,除非您可以找到一些 Windows 机器来运行 SQLServer,然后使用 JDBC 驱动程序连接到它,否则前面提到的两个选项可能是有效的替代方案(即,选项 1 = 将您的数据复制到 MSAccess 文件中并访问该文件使用 jackcess 或选项 2,将数据复制到一些具有良好 JDBC 驱动程序的 Linux 容错数据库中并使用它)

【讨论】:

  • 我希望对 mdf 文件有所不同:它也是 SQL Server“通常”生成和使用的文件类型。见那里:stackoverflow.com/questions/1175882/what-is-an-mdf-file
  • @Nevoris 我的解释是基于 OP 所说的,即他有一个 .mdf 文件,而且我认为只给某人 SQLServer 的数据文件是很不常见的——你宁愿得到一个某种转储文件 - 我将其缩小到 MSAccess 数据库。但截至目前,仍不清楚他是想连接到 SQL 服务器,还是想使用他在某处获得的 mdf 文件 - 另请参阅我在他们问题下方的 OP 澄清请求。
  • 没错,我很挑剔,因为你似乎对文件很自信,而且它可能误导了毒液。让我们等待更多的解释:)
  • @Nevoris 看到新的 cmets - 我现在将保持原样,但我将对其进行编辑以清楚地表明我正在谈论 mdf 文件的 MSAccess 变体 - 它可能会为未来的访客服务。
  • MDB 是 Access。 MDF 是 SQL Server。
【解决方案2】:

有些人被我的问题误导了(我不是以英语为母语的人,可能是这样),数据库本来是要在本地运行的(明确地不在远程服务器上),而 SQL Server 根本不可能发生这种情况+ Linux 组合。葡萄酒是一种可能,但这太麻烦了。因此,解决方案要么在 Windows 上简单地使用 SQL Server,要么使用替代的跨平台 RDBMS,如 MySQL。 不过,我会接受 fvu 编辑后的答案,并感谢其他用户在他们自己的答案上投入的时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多