我在寫一個應用程序需要連接到sql server。我更喜歡用Java編寫應用程序。但是當我嘗試連接到服務器時,我得到了連接拒絕錯誤。我正在使用JTDS JDBC驅動程序。我認爲這是由於1433或1434端口未打開。服務器在我的工作地點,我無法更改端口。但有趣的是,我使用c#編寫相同的東西,它連接成功。是否因爲C#庫中的SqlConnection類與ms sql server更好地協作?或者我在這裏做錯了什麼?僅供參考,我們正在使用的服務器是MS SERVER 2003.當談到連接到Sql Server數據庫時,Java和C#有什麼區別?
對不起,我以前沒有提供任何代碼。一個棘手的部分是我們擁有的服務器在本地網絡上被稱爲「服務器」。
C#:
SqlConnection objConnection = new SqlConnection("Data Source= SERVER\\SQLEXPRESS;Initial Catalog=SSS;Persist Security Info=True;User ID=user;Password=pass");
SqlCommand objcommand = new SqlCommand();
string strSQL;
objcommand.Connection = objConnection;
strSQL = "select * from company where companyid = @companyID ";
try
{
objConnection.Open();
SqlDataReader Query = objcommand.ExecuteReader();
while (Query.Read())
{
MessageBox.Show(Convert.ToString(Query["clientRef"]));
}
objConnection.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error Retreiving info: " + ex.ToString(), "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
objConnection.Close();
}
由於我沒有真正熟悉C#。我從其中一所大學獲得了上述代碼。它會正確返回信息。
的Java:
try{
Connection connection;
Class.forName("net.sourceforge.jtds.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:jtds:sqlserver://network.local/SERVER\\SQLEXPRESS:1433/SSS","user","pass");
System.out.println("Connection succeed!");
}
catch (Exception e) {
e.printStackTrace();
}
上面的Java代碼了網絡錯誤IOException:連接被拒絕的錯誤。僅供參考:我可以成功ping通server.network.local。但是當我telnet server.network.local 1433/1434時,我得到了telnet:無法連接到遠程主機:連接被拒絕。
他們都應該工作 - 聽起來就像你只需要調試java端。 – skaz
你一定是做錯了,因爲java可以完美地連接到MS Sql。檢查你的連接字符串。 – Jethro
簡短的回答:沒有任何...你在代碼中犯了一個錯誤。向我們展示你在這兩種情況下做了什麼...... !!! –