2012-12-12 46 views
1

我想連接到我的數據庫,名爲「Recept」。首先,我在端口方面遇到了一些麻煩,但是我修復了它。現在,我有這樣的代碼:netbeans和微軟sql服務器連接異常

try { 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     String connectionUrl = "jdbc:sqlserver://127.0.0.1:1433;" 
       + "databaseName=Recept;"; 
     Connection con = DriverManager.getConnection(connectionUrl); 
    } catch (SQLException e) { 
     System.out.println("SQL Exception: " + e.toString()); 
    } catch (ClassNotFoundException cE) { 
     System.out.println("Class Not Found Exception: " + cE.toString()); 
    } 

我得到這個異常:

SQL Exception: com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user ''. ClientConnectionId:01819eae-5044-426b-a462-645f247003d6 

我不知道我的用戶名和密碼,這是我可以連接到我的服務器,你可以看,我不需要用戶名和密碼: enter image description here

請有人幫我,我應該怎麼寫我的「connectionUrl」在Java?

謝謝!

+1

Windows身份驗證在Java代碼中不起作用。您需要在數據庫中創建一個新用戶,並使用此用戶從Java代碼連接到數據庫。 – flash

+0

比我怎麼能創建一個新用戶? – victorio

+1

其實,Windows身份驗證將工作,如果您加載身份驗證DLL,請參閱http://msdn.microsoft.com/en-us/library/ms378428.aspx#Connectingintegrated –

回答

0

爲了能夠使用Windows身份驗證與SQL Server的JDBC驅動程序,您需要通過添加sqljdbc_auth.dll加載正確的驗證DLL(32位或64位取決於你的JVM)在您的java.library。路徑,並在JDBC url中包含連接屬性integratedSecurity=true

見詳細說明和背景http://msdn.microsoft.com/en-us/library/ms378428.aspx#Connectingintegrated

+0

我不明白,我應該在哪裏複製DLL?到:C:\ Windows \ System32?或在哪裏? – victorio

+0

我將它複製到C:\ Windows \ System32 \中,並且發生以下異常: SQL異常:com.microsoft.sqlserver.jdbc.SQLServerException:登錄失敗。登錄來自不受信任的域,不能與Windows身份驗證一起使用。 ClientConnectionId:f9ba4c34-194b-4a29-9805-c104624cb377' – victorio

+1

1)您不應將其複製到system32中,而只需將java.library.path屬性設置爲指向該位置; 2)該錯誤指示IntegratedSecurity正在工作,但很可能該應用程序是從本地帳戶運行的,有關更多信息,請參閱http://blogs.msdn.com/b/sql_protocols/archive/2008/05/03/understanding-the-error-message-login-failed - 對於用戶最用戶是 - 不相關聯的上帶有一個信任-SQL服務器connection.aspx –

0

你能不能真正與JdbcOdbc司機工作?

{ 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    con = DriverManager.getConnection("jdbc:odbc:Recept","sa","sasasa"); 
} 
catch(Exception e) 
{ 
    e.printStackTrace(); 
}