日期:2014-05-20  浏览次数:20787 次

用Java的JDBC连数据库(2005)时遇到的问题!!
今天接到一个项目,和队里的人商量了一下说用MyEsclipse+SQL Server2005来开发
以前用的数据库是2000,用的JDBC的驱动方式没有问题!可是现在我连上了2005,连最简单一个查询都出异常……
这是为什么呢?是因为2000和2005的Jar包不一样?还是因为连接数据库的方式不一样?
刚才开我以为是端口的问题,可是看看端口05也是1433啊!
我的数据库服务器名是EVA,验证是SQL的,用户名sa,密码为空
下面是我的代码(我先说明,数据库没有问题,用ODBC能连!)
Java code

public class Test {
    public static void main(String[] args) throws Exception {
        Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
        String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=数据库名";
        String user = "sa";
        String password = "";
        Connection conn = DriverManager.getConnection(url);
        
        String sql = "select * from star";
        java.sql.PreparedStatement ps = conn.prepareStatement(sql);
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            System.out.print(rs.getString(1)+"   ");
            System.out.println(rs.getString(2));
        }
    }
}




下面是出的异常:
Java code

Exception in thread "main" java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
    at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
    at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
    at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at Test.main(Test.java:9)



------解决方案--------------------
LZ,SQL2005的驱动类根2000的不一样

2000:
driverClassName =com.microsoft.jdbc.sqlserver.SQLServerDriver
Url=jdbc:microsoft:sqlserver://localhost:1433;databaseName=test

2005:
driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://127.0.0.1:1433;databaseName=test