Java + SQL Server - 一个可行的解决方案?

时间:2008-08-09 13:23:41

标签: java sql-server

我将开始一个新项目 - 从头开始​​重写现有系统(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。我想我们应该对它们进行测试。

我应该知道的解决方案是否存在任何限制?有人有过这种技术组合的经历吗?

6 个答案:

答案 0 :(得分:8)

我参与了一个使用MSQL Server和Java Stack的项目。它工作得非常好,并且由于JDBC不应该真正关心您的数据库。我们将ehcache和Hibernate一起使用,并且遇到了MS JDBC驱动程序的问题,因此我们切换到了jtds并且它的工作非常好。

这是很久以前的事了,所以你仍然可能想给MS司机一个机会......

答案 1 :(得分:1)

jTDS很棒。多年来我一直在高可用性生产环境中使用它。

答案 2 :(得分:1)

我不了解Java和2008 ......但是你不应该对Java和SQL2000有太多麻烦。正如lubos建议的那样,你可以帮自己看一下c#,但如果你对Java更加熟悉,那么JDBC连接器is supported by Microsoft

应该没有任何实际限制。

答案 3 :(得分:1)

我会倾向于jTDS驱动程序。 MSSQL驱动程序有一个限制,您无法重新读取同一列两次。使用Hibernate时会经常发生这种情况。

答案 4 :(得分:1)

我们已经运行了一个使用Hibernate与多个远程MSQL Server实例通信的应用程序已有几年了,我们也在使用M $驱动程序发生一些问题之后提前切换到了jTDS驱动程序。由于开关我们根本没有任何问题。但是,它不是一个复杂的应用程序,所以它不使用任何LOB。希望有所帮助。

答案 5 :(得分:0)

JDBC驱动程序适用于SQL Server 2008,我没有遇到任何问题。您需要下载的版本取决于您安装的JRE的版本。 JRE6使用JDBC4,JRE7使用JDBC4.1等。从Microsoft下载正确的驱动程序并运行安装程序后,您需要复制 \ auth 目录中的 sqljdbc_auth.dll 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));
        }
    }
}