Java-在Linux上连接SQL Server数据库

Java-在Linux上连接SQL Server数据库,java,sql-server,linux,jdbc,freetds,Java,Sql Server,Linux,Jdbc,Freetds,我已经下载并导入到我的项目JDBC驱动程序中,该驱动程序应该支持Linux(尽管只在SUSE Linux上测试) 我想要的是能够在Linux上通过Java使用.mdf数据库。这些查询显然需要运行一些东西,而不是简单地连接到数据库——如果我理解正确的话。 我发现了一个关于我的问题的有价值的信息 所以我在考虑FreeTDS+JDBC的组合。查询是否会按预期执行,还是必须在Windows上以本机方式使用数据库?后者基本上粉碎了Java提供的操作系统不可知论,如果可能的话,我希望避免这种不可知论 数据库

我已经下载并导入到我的项目JDBC驱动程序中,该驱动程序应该支持Linux(尽管只在SUSE Linux上测试)

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

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

数据库本身并不是什么稀奇古怪的东西,只有几个表——毕竟,这只是学校的作业。 如果需要,我将提供其他信息。

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

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

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

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

    我的问题误导了一些人(我不是英语母语,可能是英语),该数据库本应在本地运行(显然不是在远程服务器上)这在SQL server+Linux组合中是不可能发生的。Wine是一种可能性,但这太麻烦了。因此,解决方案要么在Windows上使用SQL server,要么使用MySQL等其他跨平台RDBMS。
    尽管如此,我还是会接受fvu编辑的答案,并感谢其他用户为自己的答案投入的时间。

    如果您的项目是java,而您使用的是JDBC驱动程序,为什么您需要FreeTDS?@kosta JDBC驱动程序可以单独用于执行查询吗?如果可以,我将尝试这种方式。但我如何连接和协调配置服务器端口等?您真的在使用SQL server(在另一台windows计算机上)?如果是这样,您可以将驱动程序注册为:Class.forName(…),并将jdbc url构造为:jdbc:sqlserver://[serverName[\instanceName][:portNumber][;property=value[;property=value]]@Venom我想你应该澄清你到底想要什么-你的问题清楚地说明了
    我想要的是能够在Linux上通过Java使用.mdf数据库。
    但是你对kosta问题的回答似乎表明你实际上想要连接到SQLServer数据库服务器。因为这些是不同解决方案的不同问题我应该澄清一下你到底需要哪一个…@fvu,正如我提到的,这只是一个学校作业,对我来说是全新的(不是一般的编程,只是Java及其原理)。我有一个.mdf数据库(在SQL Management Studio中使用T-SQL创建)和它的.ldf日志文件(我想这是必需的)这将用于使用MS开发的JDBC驱动程序或其他替代程序的Java应用程序中。我不知道的是,仅此驱动程序就足以执行查询。kosta说应该这样做,但我对此有点怀疑。我甚至不知道将上述文件放在何处,因为SQL Server将它们存储在其自己的默认路径中。我请求d与mdf文件不同:它也是“典型”的文件类型由SQL Server生成并使用。请看:@Nevoris我是根据OP所说的来解释的,即他有一个.mdf文件,而且我认为仅仅给某人一个SQL Server的数据文件是非常罕见的——你更愿意得到某种转储文件——我将其缩小为MSAccess数据库。但到目前为止,还不清楚他是否想要o连接到SQL server,或想使用他从某处获得的mdf文件-另请参见我在他们问题下方的OP要求澄清的内容。没错,我很挑剔,因为你似乎对该文件非常自信,这可能误导了Venom。让我们等待更多解释:)@Nevoris看到了新的注释-我将保留现在的答案,但我将对其进行编辑以清楚地表明我所说的是mdf文件的MSAccess变体-它可能为未来的访问者服务。MDB是Access。mdf是SQL Server。