Announcement

Collapse
No announcement yet.

Problem mit der SQL-connection

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit der SQL-connection

    Hallo ich habe eine kleines Problem mit meiner SQL-Java-Kombi.
    Ich bekomme immer nen Fehler:
    java.sql.SQLException: Network error IOException: Connection refused: connect

    jetzt bin ich mir nicht ganz sicher ob ich den ConnectionString richtig hab.

    Code:
    String url = "jdbc:jtds:sqlserver://EISRV04/EB90/Datenbanken/GPS_viewer";
    con = DriverManager.getConnection( url, "GPS_Master", "xxxxxx" );
    stmt = con.createStatement();
    in der Datenbank habe ich die folgende Einstellungen (siehe Bild).

    Bin ich auf dem Holzweg??
    Attached Files

  • #2
    Hi Webbolle,

    ich selbst benutze keinen SQLServer, deswegen hab ich mal gegoogelt. Laut der Seite von jtds (http://jtds.sourceforge.net/faq.html#urlFormat) sieht eine url so aus:
    Code:
    jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]
    Wenn ich das jetzt mit Deiner URL abgleiche, kommt mir der Teil "/EB90/Datenbanken" überflüssig vor. Falls EB90 ein instance name ist. Den musst Du bei jtds als Parameter angeben und nicht in den Pfad mit schreiben. Die URL würde dann so aussehen (wenn ich die Anleitung richtig verstanden hab ):
    Code:
    jdbc:jtds:sqlserver://EISRV04/GPS_viewer;instance=EB90
    Falls das nicht hilft, kannst Du mal den Stacktrace der Exception posten? Dann kann man sehen, wo es genau hängt. Könnte ja auch sein, dass der SQLServer schlicht nicht läuft, eine Firewall Verbindungen auf den Datenbankport blockt, die Datenbank selbst keine Connections von außerhalb localhost zulässt etc.

    Gruß ngomo
    Zuletzt editiert von ngomo; 21.07.2009, 23:11. Reason: url korrigiert
    http://www.winfonet.eu

    Comment


    • #3
      Hallo ngomo,
      erstmal vielen Dank für die schnelle Antwort. ich habe es versucht den Pfad in "jdbc:jtds:sqlserver://EISRV04/GPS_viewer;instance=EB90" zu ändern.
      Dann bekomme ich folgende Stacktrace:
      Code:
      java.sql.SQLException: Falsche Syntax in der Nähe von ','.
      	at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
      	at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2816)
      	at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2254)
      	at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:631)
      	at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:477)
      	at net.sourceforge.jtds.jdbc.JtdsStatement.executeQuery(JtdsStatement.java:1301)
      	at prog.main(prog.java:28)
      da is wohl noch ein Syntaxfehler drin. Verwende ich jedoch
      "jdbc:jtds:sqlserver://EISRV04/EP90/GPS_viewer"
      dann bekomme ich folgende Stacktrace:
      Code:
      java.sql.SQLException: Network error IOException: Connection refused: connect
      	at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:385)
      	at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
      	at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:182)
      	at java.sql.DriverManager.getConnection(Unknown Source)
      	at java.sql.DriverManager.getConnection(Unknown Source)
      	at prog.main(prog.java:24)
      Caused by: java.net.ConnectException: Connection refused: connect
      	at java.net.PlainSocketImpl.socketConnect(Native Method)
      	at java.net.PlainSocketImpl.doConnect(Unknown Source)
      	at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
      	at java.net.PlainSocketImpl.connect(Unknown Source)
      	at java.net.SocksSocketImpl.connect(Unknown Source)
      	at java.net.Socket.connect(Unknown Source)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      	at java.lang.reflect.Method.invoke(Unknown Source)
      	at net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:304)
      	at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:255)
      	at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:310)
      	... 5 more
      also ich hoff dass ich den Stacktrace richtig ausgelesen hab. bin noch neu in Java. Oder habe ich an der stelle einfach den Treiber irgendwie falsch eingebunden?

      Die SQL-Datenbank sollte jedoch schon funktionieren weil ich mit C# ohne Probleme drauf zugreifen kann. In C# Verbinde ich mich mit der Datenbank mit:

      Code:
              //Connection für Datenbank
              private string server = "eisrv04\\eb90";
              private bool int_security = false;
              private string user_ID = "GPS_Master";
              private string password = "xxxxxx";
              private int timeout = 10;
              private bool pooling = true;
              private bool presist_security = true;
              private string selected_database = "GPS_viewer";
      
              public string getConnectionString()
              {
                  SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
                  builder["Data Source"]          = server;
                  builder["integrated Security"]  = int_security;
                  builder["User ID"] = user_ID;
                  builder["Password"] = password;
                  builder["Initial Catalog"] = selected_database;
                  builder["Connection Timeout"] = timeout;
                  builder["Persist Security Info"] = presist_security;
                  builder["Pooling"] = pooling;
      
                  return builder.ConnectionString;
              }
      Gruß webbolle

      Comment


      • #4
        Portnummer

        Hallo Webbolle,
        da is wohl noch ein Syntaxfehler drin.
        Hab ich die Anleitung wohl doch nicht ganz verstanden

        also ich hoff dass ich den Stacktrace richtig ausgelesen hab. bin noch neu in Java. Oder habe ich an der stelle einfach den Treiber irgendwie falsch eingebunden?
        Den Stack Trace hast Du richtig ausgelesen. Und den Treiber hast Du auch richtig eingebunden. Hättest Du das nicht, würde er überhaupt nicht versuchen, eine Verbindung aufzumachen.

        Was mir jetzt nur noch einfällt ist, den TCP-Port mal explizit anzugeben, also: "jdbc:jtds:sqlserver://EISRV04:PortNr/EP90/GPS_viewer"". Soweit ich SQLServer verstanden habe, macht der nämlich für unterschiedliche Instanzen unterschiedliche Ports auf. Ist EB90 denn ein Instanzname?

        Gruß ngomo
        http://www.winfonet.eu

        Comment


        • #5
          Hallo ngomo,
          ich nehm alles zurück und behaupte das Gegenteil. Du hattest die Anleitung richtig verstanden. Ich hab selber nen Syntaxfehler eingebaut :-(
          aber noch mal vielen Dank für deine Hilfe. Jetzt funktioniert es :-)

          Code:
          try 
          {
          	Class.forName( "net.sourceforge.jtds.jdbc.Driver" );
          	}
          	catch ( ClassNotFoundException e ) {
          	System.out.println( "Fehler bei ODBC-JDBC-Bridge" + e );
          	return;
          }
          	
          Connection con;
          Statement stmt;
          ResultSet rSet;
          	
          try
          {
          	String url = "jdbc:jtds:sqlserver://eisrv04/GPS_viewer;instance=EB90";
          	con = DriverManager.getConnection( url, "GPS_Master", "xxxxxx" );
          	stmt = con.createStatement();
          			
          	String sqlQuery = "SELECT name FROM configuration";
          			
          			
          	rSet = stmt.executeQuery( sqlQuery );
          			
          	while ( rSet.next() )
          	System.out.println ( rSet.getString(1));
          	
          	stmt.close();
          	con.close();
          }
          catch ( SQLException e )
          {
          	e.printStackTrace();
          	System.out.println( "Fehler bei Tabellenabfrage: " + e );
          	return;
          }

          Comment

          Working...
          X