我正在编写一个应用程序,需要连接到 SQL Server。我更喜欢用 Java 编写应用程序。但是当我尝试连接到服务器时,出现连接被拒绝错误。我正在使用 JTDS JDBC 驱动程序。我认为这是由于端口1433或1434没有打开。服务器在我的工作地点,我无法更改端口。但有趣的是,我用 c# 写了同样的东西,它连接成功。是因为 C# 库中的 SqlConnection 类与 ms sql server 配合得更好吗?或者我在这里做错了什么?仅供引用,我们在工作中使用的服务器是 MS SERVER 2003。
抱歉,我之前没有提供任何代码。一个棘手的部分是我们拥有的服务器在本地网络上称为“SERVER”。
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:无法连接到远程主机:连接被拒绝。
最佳答案
检查您的 .NET 应用程序的连接方式。它可能就像使用命名管道一样简单,JTDS 也支持命名管道。
关于c# - 在连接 Sql Server 数据库时,Java 和 C# 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6536463/