tmaster
tmaster

Reputation: 9665

What is the difference between Java and C# when it comes to connect to Sql Server Database?

I am writing an application requires to connect to sql server. I prefer to write the App in Java. but When I try to connect to the server I got the connection refused error. I am using JTDS JDBC driver. I think it is due to the port 1433 or 1434 are not open. The server is in my work place and I can not change the ports. But funny enough, I use c# writing the same thing, it connects successfully. is it because SqlConnection class in C# library works better with ms sql server? or am I doing something wrong here? FYI, the server we are using in work is MS SERVER 2003.

Sorry I did not provide any code earlier. One tricky part is that the server we have is called "SERVER" on the local network.

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();
        }

As I am not really familiar with C#. I have got the code above from one of the colleges. and it returns the info correctly.

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(); 
}

The java code above got Network error IOException: Connection refused error. FYI: I can ping server.network.local successfully. But when I telnet server.network.local 1433/1434, I got telnet: Unable to connect to remote host: Connection refused.

Upvotes: 0

Views: 2291

Answers (3)

Shahriar N Khondokar
Shahriar N Khondokar

Reputation: 578

At the following link you will find a useful tutorial which describes in detail how to connect to MS SQLServer database, both from Java and C#. It also describes how to query the database, pass and retrieve data and much more. Hope you find it useful: http://www.shahriarnk.com/Shahriar-N-K-Research-Embedding-SQL-in-C-Sharp-Java.html

Upvotes: 0

Shawn Vader
Shawn Vader

Reputation: 12385

It might be that the defaults are different, are you setting the port when you initialise your driver

jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]

Something like this jdbc:jtds:sqlserver://nameofyourdatabaseserver.or.ipaddress:port/yourdatabasename

Try using the full dns name for your server or the IP address

Upvotes: 0

Jon Skeet
Jon Skeet

Reputation: 1503889

Check how your .NET app is connecting. It may be as simple as it using named pipes, which JTDS supports as well.

Upvotes: 3

Related Questions