2016-12-08 7 views
0

私はCore Java Volume 2の高度な機能を研究しています。データベースプログラミングの章でソースコードを実行するためには、どのデータベースにも接続する必要があります。おそらく著作権問題のためにソースコード全体を共有することはできません。しかし、基本的に私は、単純なTESTDBのJavaプログラムや、DriverNameと、DBのURL、次のようにユーザー名とパスワードがdb.propertiesファイルに配置されているように接続プロパティを使用してSQL Serverに接続しようとしています:コードテストJavaプログラムを使用してSQL Server 2008へのデータベース接続を確立できません

#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 

私は、次のスタックトレースを取得する:

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) 

私はJava connection to a SQL Server Database: Login failed for user 'sa'

と呼ばれている、私は1433年に設定されIPALLポートを持っている、TCP/IPがで有効になってサーバー構成マネージャーと私は通常 'sa'アカウントでSQLサーバー管理スタジオを使用してログインすることができます。私はMicrosoftのWebサイトから最新のsqljdbc4.jarを使用しています。

+0

とにかく 'sa'としてログインしようとしているので、おそらく' integratedSecurity = false'を試してみてください。 –

+0

@GordThompson私は統合されたセキュリティプロパティを使わずに試してみましたが、別のプロパティインスタンス= 'SQLExpress'を追加してみても、同じエラーが表示されます。 :( –

+0

これで、プロパティファイルのユーザ名とパスワードの前後にある二重引用符を削除してください。たとえば、 'dbc.username =" sa "'ではなく 'dbc.username = sa'です。 –

答えて

1

@GordThompsonありがとうございます!ユーザー名とパスワードの両方から二重引用符を削除しました

jdbc.username=sa 
jdbc.password=123456 

これは現在データベースに接続しています。

関連する問題