12

我将开始一个新项目 - 从头开始​​重写现有系统(PHP + SQL Server),因为设计上有一些非常严重的限制。

我们对 SQL Server 有一些很好的了解(目前我们在现有系统中使用 SQL Server 2000),我们希望在我们的新项目中使用它的新版本(我猜是 2008 年)。

我真的很喜欢 Java 提供的技术——尤其是 Spring Framework 和 Wicket,而且我之前从其他项目和作业中非常熟悉 Java。因此,我们考虑使用 Java 和 Microsoft SQL Server。

SQL Server 有两个 JDBC 驱动程序 - jTDS 和 Microsoft 的一个 - http://msdn.microsoft.com/en-us/data/aa937724.aspx。我认为我们应该测试他们两个。

我应该知道这种解决方案有什么限制吗?有人体验过这种技术组合吗?

4

6 回答 6

8

我曾在一个项目中使用 MSQL Server 和 Java Stack。它工作得很好而且很长,因为 JDBC 不应该真正关心你的数据库。我们将 ehcache 与 Hibernate 一起使用,并且 MS JDBC 驱动程序出现问题,因此我们切换到 jtds,它的效果非常好。

很久以前了,所以你可能还想给 MS 司机一个机会……

于 2008-08-09T20:18:15.240 回答
1

我不了解 Java 和 2008 ......但你不应该对 Java 和 SQL2000 有太多的麻烦。正如 lubos 建议的那样,您可以帮自己一个忙,看看 c#,但是如果您对 Java 更熟悉,那么应该没有任何真正的限制,因为Microsoft 支持JDBC 连接器

于 2008-08-09T13:58:38.453 回答
1

几年来,我们一直在运行使用 Hibernate 与多个远程 MSQL Server 实例通信的应用程序,并且在 M$ 驱动程序出现一些问题后,我们也很早就切换到了 jTDS 驱动程序。自从切换以来,我们根本没有任何问题。但是,它不是一个复杂的应用程序,因此它不使用任何 LOB。希望有帮助。

于 2008-08-13T11:11:09.460 回答
1

jTDS 非常好。我多年来一直在高可用性生产环境中使用它,没有出现任何问题。

于 2008-08-13T12:56:57.203 回答
1

我会倾向于 jTDS 驱动程序。MSSQL 驱动程序有一个限制,您不能重复读取同一列两次。这在使用 Hibernate 时经常发生。

于 2008-09-17T18:02:14.623 回答
0

JDBC 驱动程序适用于 SQL Server 2008,我没有遇到任何问题。您需要下载的版本取决于您安装的 JRE 的版本。JRE6 使用 JDBC4,JRE7 使用 JDBC4.1 等。从 Microsoft 下载正确的驱动程序并运行安装程序后,您需要将 sqljdbc_auth.dll\auth目录复制到c:\windows\system32目录。然后可以使用此代码进行连接:

在您的标题中:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

在你的课堂上:

public class connectToSQL {

    public void connectToDB() throws Exception {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        String connectionUrl = "jdbc:sqlserver://<IPADDRESS>:<PORT>;DatabaseName=<NAME OF DATABASE TO CONNECT TO>;IntegratedSecurity=false";    
        Connection con = DriverManager.getConnection(connectionUrl, "<SQL SERVER USER LOGIN>", "<SQL SERVER PASSWORD>");
        Statement s = con.createStatement();
        ResultSet r = s.executeQuery("SELECT * FROM <TABLENAME TO SELECT FROM>");
        while (r.next()) {
            System.out.println(r.getString(1));
        }
    }
}
于 2016-07-29T17:21:30.777 回答