我正在编写一个应用程序需要连接到sql服务器。我更喜欢用Java编写应用程序。但是当我尝试连接到服务器时,我得到了连接被拒绝的错误。我正在使用JTDS JDBC驱动程序。我认为这是由于端口1433或1434没有开放。服务器在我工作的地方,我不能更换端口。但有趣的是,我用c#写了同样的东西,它成功地连接了。是因为C#库中的SqlConnection类可以更好地与ms sql server配合使用吗?还是我做错了什么?仅供参考,我们在工作中使用的服务器是MS server 2003。
抱歉,我之前没有提供任何代码。一个棘手的部分是,我们拥有的服务器在本地网络上被称为“服务器”。
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。但是当我远程登录server.network.local 1433/1434时,我得到了远程登录:无法连接到远程主机:连接被拒绝。
发布于 2011-06-30 22:39:00
检查你的.NET应用是如何连接的。它可能和使用命名管道一样简单,JTDS也支持命名管道。
发布于 2011-06-30 22:46:17
可能是缺省值不同,您是否在初始化驱动程序时设置端口
jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]类似这样的jdbc:jtds:sqlserver://nameofyourdatabaseserver.or.ipaddress:port/yourdatabasename
尝试使用服务器的完整dns名称或IP地址
发布于 2011-07-02 22:43:44
在下面的链接中,你会发现一个有用的教程,它详细描述了如何从Java和C#连接到MS SQLServer数据库。它还描述了如何查询数据库、传递和检索数据等。希望你会发现它很有用:http://www.shahriarnk.com/Shahriar-N-K-Research-Embedding-SQL-in-C-Sharp-Java.html
https://stackoverflow.com/questions/6536463
复制相似问题