1

问题已被更新(类DriverManager不再手动加载,而是使用getConnection()方法):无法通过java连接到SQL Server 2014

package guii; 

import java.sql.Connection; 
import java.sql.DatabaseMetaData; 
import java.sql.DriverManager; 
import java.sql.SQLException; 

/** 
* This program demonstrates how to establish database connection to Microsoft 
* SQL Server. 
* @author www.codejava.net 
* 
*/ 
public class JdbcSQLServerConnection { 

public static void main(String[] args) { 

    Connection conn = null; 

    try { 

     String dbURL = "jdbc:sqlserver://ASUS\\YES:1433"; 
     String user = "TestingUser"; 
     String pass = "12345"; 
     conn = DriverManager.getConnection(dbURL, user, pass); 
     if (conn != null) { 
      DatabaseMetaData dm = (DatabaseMetaData) conn.getMetaData(); 
      System.out.println("Driver name: " + dm.getDriverName()); 
      System.out.println("Driver version: " + dm.getDriverVersion()); 
      System.out.println("Product name: " + dm.getDatabaseProductName()); 
      System.out.println("Product version: " + dm.getDatabaseProductVersion()); 
     } 

    } catch (SQLException ex) { 
     ex.printStackTrace(); 
    } finally { 
     try { 
      if (conn != null && !conn.isClosed()) { 
       conn.close(); 
      } 
     } catch (SQLException ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 
} 

的问题是所得到的这种代码的异常。我无法知道为什么抛出这个特殊的异常。

重复检查用户名,密码和服务器名称,并确定正确。

目前这个异常被抛出:

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'TestingUser'. 
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:196) 
at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:246) 
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:83) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2532) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:1929) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:1917) 
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4026) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1416) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1061) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:833) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:716) 
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:841) 
at java.sql.DriverManager.getConnection(DriverManager.java:664) 
at java.sql.DriverManager.getConnection(DriverManager.java:247) 
at guii.JdbcSQLServerConnection.main(JdbcSQLServerConnection.java:25) 
+0

您的服务器名称确实是'String server =“ASUS \\ YES”;'? –

+0

我不确定,但我检查了它在Microsoft SQL Server Management Studio中的服务器属性。或者找出服务器名称的任何其他方式? – jiahao

+0

您是否尝试过使用Windows身份验证? – giro

回答

0

故障排除注意

  1. 使用integratedSecurity = TRUE再次

  2. 检查,如果你在你的SYSTEM32 sqljdbc_auch.dll文件夹 结帐this link 确保你使用正确的(32比64位) 确保sqljdbc_auch.dll是在Windows系统路径

  3. 检查,如果你的服务器实例的属性被设置正确:访问权限,确保它实际上听港口1433,... 检出this link,不只是看看接受的答案,但其他两个以及。

  4. 确保您的防火墙不会阻止任何连接

  5. 退房,如果你的Java版本使用sqljdbc4.2需要Java 1.8,jdbc4.1需要Java 1.7的JDBC版本相匹配。 look here

+0

@家豪到底帮了你什么? – giro

+0

你给我的答案是帮助我,但现在的问题是我无法通过我的用户和密码连接它。我无法使用查询访问我的表。我已经将我的查询(Table)更改为[Database Name]。[Schema]。[Table Name]仍然是相同的错误是无效的对象名称。请帮帮我。 – jiahao

+0

我想如果你已经连接到数据库[Schema],[Table Name]应该足够了。同时检查您的访问权限,以便您可以使用Windows用户访问您的表格。这应该可以解决你的问题。 – giro