SQLException - 连接重置错误

时间:2012-10-30 06:14:40

标签: sql-server-2008 jdbc

我正在尝试使用SQLJDBC4 jar文件和JDK 1.6建立与SQL Server 2008 R2的jdbc连接。我正在使用Netbeans IDE并添加了SQLJDBC4 jar并在服务的'databases'部分添加了数据库的路径。代码如下:

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

public class Connect2 {


    public static void main(String[] args) throws SQLException {

   Connection conn;
        conn = null;
           System.out.println("Done....");

           try
           {

               Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

               conn = DriverManager.getConnection ("jdbc:sqlserver://172.17.39.13\\CRM:1433;databaseName=crm_xchanging","crm_xchanging","Welcome001");
               System.out.println ("Database connection established");


           }
           catch (ClassNotFoundException e)
           {
               System.out.println (e);
           }
           catch (SQLException ex)
           {
               System.out.println(" error");
           }


          finally
         {
             if (conn != null)
              {

                       try{

               Statement st = conn.createStatement();
                ResultSet res = st.executeQuery("SELECT * FROM  usertable");
                System.out.println("User Name: " );
                        while (res.next()) {
                                String employeeName = res.getString("user_name");
                                System.out.println(employeeName);
                                            }
                    conn.close();
    }
                 catch(SQLException ex){
  System.err.println("SQLException information");

  while(ex!=null) {
  System.err.println ("Error msg: " + ex.getMessage());
  System.err.println ("SQLSTATE: " + ex.getSQLState());
  System.err.println ("Error code: " + ex.getErrorCode());
  ex = ex.getNextException(); 
// For drivers that support chained exceptions
  }}




               }
           }

       }

   }

这是我得到的输出:

run:
Done....
Database connection established
SQLException information
Error msg: Connection reset
SQLSTATE: 08S01
Error code: 0
BUILD SUCCESSFUL (total time: 1 second)

我认为代码或JDK中没有任何错误。我也尝试设置最大值。 SQL Server的活动连接为0(无限)。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

Java 6u29中引入了一个已知的错误,该错误导致SSL失败,特别是SQL Server 2008 R2。 An Atlassian Fisheye troubleshooting page表示修复不完整。

  

Oracle在6u30发布了一个修复程序,但至少有一个受影响   客户端甚至没有Java 1.7工作。

在我的开发团队中,我们发现此错误也会影响Java 8。 Fisheye文章中的一个建议是使用JVM标志禁用CBC保护,这对我来说也适用于带有SQL Server 2008 R2连接的SSL Java 8 SSL。

-Djsse.enableCBCProtection=false

另一个建议是恢复到Java 1.6.0_24。