我正在编写一个应用程序需要连接到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#并不熟悉。我从其中一所大学得到了上面的代码。并且它正确地返回信息。
爪哇:
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:无法连接到远程主机:连接被拒绝。
答案 0 :(得分:3)
检查.NET应用的连接方式。它可能就像使用命名管道一样简单,JTDS也支持它。
答案 1 :(得分:0)
可能是默认值不同,您是在初始化驱动程序时设置端口
jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]
像这样jdbc:jtds:sqlserver://nameofyourdatabaseserver.or.ipaddress:port/yourdatabasename
尝试使用服务器的完整DNS名称或IP地址
答案 2 :(得分:0)
在以下链接中,您将找到一个有用的教程,详细描述如何连接到MS SQLServer数据库,来自Java和C#。它还描述了如何查询数据库,传递和检索数据等等。希望您觉得它很有用:http://www.shahriarnk.com/Shahriar-N-K-Research-Embedding-SQL-in-C-Sharp-Java.html