2016-12-08 6 views
0

을 사용하여 SQL Server 2008에 대한 데이터베이스 연결을 설정할 수 없습니다. 핵심 Java 2 볼륨 고급 기능을 배우고 있습니다. 데이터베이스 프로그래밍 장에서 소스 코드를 실행하려면 모든 데이터베이스에 연결해야합니다. 저작권 문제로 인해 전체 소스 코드를 공유 할 수 없습니다. 그러나 기본적으로 나는 간단한 testdb라는 자바 프로그램과 같은를 DriverName, DB URL을 다음과 같이 사용자 이름과 암호는 db.properties 파일에있는 같은 연결 속성으로 SQL Server에 연결하려고 : 코드테스트 Java 프로그램

#jdbc.drivers=com.microsoft.sqlserver.jdbc.SQLServerDriver 
jdbc.url=jdbc:sqlserver://localhost:1433 ;databaseName=COREJAVA;int‌​egratedSecurity=true" 
jdbc.username="sa" 
jdbc.password="123456" 

public static Connection getConnection() throws SQLException, IOException 
{ 
    Properties props = new Properties(); 
    try (InputStream in = Files.newInputStream(Paths.get("database.properties"))) 
    { 
     props.load(in); 
    } 
    String drivers = props.getProperty("jdbc.drivers"); 
    if (drivers != null) System.setProperty("jdbc.drivers", drivers); 
    String url = props.getProperty("jdbc.url"); 
    String username = props.getProperty("jdbc.username"); 
    String password = props.getProperty("jdbc.password"); 

    return DriverManager.getConnection(url, username, password); 
} 

나는이 stackpost JDBC connection failed, error: TCP/IP connection to host failed

에 TCP 먼저 감사의 오류를 수정하지만 지금은 프로그램을 실행할 때 다음과 같이 연결을위한 getConnection() 기능에 존재 cmd를에서 다음 명령을 사용하여 프로그램 :

다음 스택 트레이스
java -cp .;sqljdbc4.jar test.TestDB 

내가 얻을 : 나는 1433로 설정 IPAll을 포트가 Java connection to a SQL Server Database: Login failed for user 'sa'

언급 한

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user '"sa"'. ClientConnectionId:2986bb7f-4f57-4932-b4c1-614ab3684ee0 
     at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) 
     at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254) 
     at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220) 
     at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991) 
     at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827) 
     at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012) 
     at java.sql.DriverManager.getConnection(Unknown Source) 
     at java.sql.DriverManager.getConnection(Unknown Source) 
     at test.TestDB.getConnection(TestDB.java:68) 
     at test.TestDB.runTest(TestDB.java:35) 
     at test.TestDB.main(TestDB.java:19) 

는 TCP/IP가 활성화 서버 구성 관리자와 나는 'sa'계정으로 SQL 서버 관리 스튜디오를 사용하여 정상적으로 로그인 할 수 있습니다. Microsoft의 웹 사이트에서 최신 sqljdbc4.jar을 사용하고 있습니다.

+0

어쨌든'sa'로 로그인하려하기 때문에 아마도'integratedSecurity = false'를 시도해보십시오. –

+0

@GordThompson 통합 보안 속성없이 시도했지만 다른 속성 인스턴스를 추가하여 시도해 보았습니다. = 'SQLExpress'여전히 동일한 오류가 발생합니다. :( –

+0

좋아, 속성 파일에서 사용자 이름과 암호 주위에 큰 따옴표를 제거해보십시오 (예 :'dbc.username = "sa"'대신'dbc.username = sa'). –

답변

1

@GordThompson 감사합니다. 사용자 이름과 비밀번호 모두에서 큰 따옴표를 삭제했습니다.

jdbc.username=sa 
jdbc.password=123456 

그리고 지금 데이터베이스에 연결 중입니다!