Java - 连接到Linux上的SQL Server数据库

时间:2014-01-07 01:17:28

标签: java sql-server linux jdbc freetds

我已下载并导入到我的项目this JDBC驱动程序中,该驱动程序可能支持Linux(尽管仅在SUSE Linux上进行了测试)。

我想要的是能够在Linux上通过Java使用.mdf数据库。查询显然需要运行一些东西,而不是简单地连接到数据库 - 如果我正确理解这一点。 我在SO上发现question似乎有关于我的问题的有价值的信息。

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

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

2 个答案:

答案 0 :(得分:2)

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

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

  1. 使用允许跨平台的Java程序打开,读取和写入MS Access数据库的开源jackcess
  2. 将MSAccess数据库文件的内容传输到具有本机Java驱动程序的某个数据库(即大多数不是MS Access的数据库)。
  3. 但是,mdf文件也可以是SQLServer数据库,但在Linux下使用该数据库也会非常棘手,因为您需要使用某个版本的SQL Server来打开它 - 请参阅here关于如何将这样的mdf文件“附加”到已安装的SQLServer实例的一些细节 - 但据我所知,没有在Linux下运行的SQL Server版本。因此,除非您可以找到一些Windows机器来运行SQLServer,然后使用JDBC驱动程序连接到它,您之前提到的两个选项都可能是有效的替代方案(即,选项1 =将您的数据复制到MSAccess文件并访问该文件使用jackcess或选项2,将数据复制到一个具有良好JDBC驱动程序的Linux容错数据库中并使用它)

答案 1 :(得分:0)

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