Gast alexC++ Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 Hallo, Ãch möchte eine Verbindung zu einer MSSQL SQLEXPRESS Datenbank herstellen aber es funktioniert leider nicht! :upps import java.sql.*; public class _Connect { public static void main(String[] args) { String connectionUrl = "jdbc:sqlserver://RE2001\\SQLEXPRESS;" + //RE2001\\SQLEXPRESS; "databaseName=Adressverwalung;integratedSecurity=true;"; ^ //User ID=sa;Password=dbms Connection con = null; Statement stmt = null; ResultSet rs = null; try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); con = DriverManager.getConnection(connectionUrl); String SQL = "SELECT * FROM Adresse"; stmt = con.createStatement(); rs = stmt.executeQuery(SQL); while (rs.next()) { System.out.println(rs.getString("Vorname") + " " + rs.getString("Nachname")); } } catch (Exception e) { e.printStackTrace(); } Folgender Fehler wird ausgegeben: com.microsoft.sqlserver.jdbc.SQLServerException: Es konnte keine Verbindung mit der benannten Instanz "" hergestellt werden. Fehler: java.net.SocketTimeoutException: Receive timed out. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.getInstancePort(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source) at java.sql.DriverManager.getConnection(DriverManager.java:562) at java.sql.DriverManager.getConnection(DriverManager.java:208) at _Connect.main(_Connect.java:18) Ist der Treiber nur für MS SQL2005 und nicht für die Express-Edition? Zitieren
ksg9-sebastian Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 TimeOut bedeutet soviel wie "Kann den Rechner im Netzwerk nicht finden". Kannst du den DB-Server mit dem angegebenen Hostname pingen? Versuch mal das Ding über die IP-Adresse (incl. Port vom MySql-Express) anzusprechen. Zitieren
carstenj Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 Hallo, also ich bin weder ein Java noch ein MSSQL Experte, aber... Es konnte keine Verbindung mit der benannten Instanz "" hergestellt werden. Fehler: java.net.SocketTimeoutException: Receive timed out. ...würde mich vermuten lassen, dass der (leere?) Name irgendwie Probleme bereitet? Zitieren
Gast alexC++ Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 der Name ist ja nicht leer ich bin mir absolut sicher, dass der server, welcher auf meinem rechner läuft so heißt -> RE2001/SQLEXPRESS pingen geht wohl auch Zitieren
ksg9-sebastian Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 Wow! Lies mal die Doku. Es ist ziemlich uninteressant wie der Server heißt. Wenn bei mir auf dem Server eine Instanz mit dem Namen xyz läuft kann ich noch lange nicht "ping xyz" ausführen. Was dann dazu führt dass die Datenbankinstanz nicht gefunden werden kann. Ich kenn die genaue Syntax für dieses Mysql-Express zwar nicht, aber es muss auf jeden Fall der Hostname angegeben werden, lokal dann z.B. "localhost" oder "127.0.0.1". Die Instanz ist eigentlich uninteressant, da jede Instanz auf nem eigenen Port hört. D.h. über localhost:10001 kommst du an Instanz1, über localhost:10002 auf die Instanz2 u.s.w. Jenachdem wie das ganze konfiguriert ist. Edit: ping RE2001 funktioniert? Das bezweifel ich mal. Das funktioniert nur dann wenn a) der Hostname deines Rechners RE2001 heißt oder im Netzwerk ein Rechner mit dem Namen RE2001 steht. Zitieren
Jaraz Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 Adressverwalung ist hoffentlich ein Tippfehler. Ich connecte so: Connection connection = DriverManager.getConnection("jdbc:sqlserver://myhost:1433;databaseName=mydb;user=myuser;password=mypass"); Zitieren
ksg9-sebastian Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 Und mach mal ein System.out.println(connectionUrl); Zitieren
Gast alexC++ Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 Adressverwalung ist schon korrekt so, habe die datenbank versehentlich so angelegt! und RE2001 ist der Name meines Rechners ja! habe es auch schon mit locahlhost probiert, geht aber auch nicht! jdbc:sqlserver://RE2001\SQLEXPRESS:1433;databaseName=Adressverwalung;integratedSecurity=true; habe den Standardport hinzugefügt! Zitieren
ksg9-sebastian Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 jdbc:sqlserver://RE2001\SQLEXPRESS:1433;databaseName=Adressverwalun g;integratedSecurity=true; Was macht das leerzeigen in "Adressverwalun g" ? Versuch mal jdbc:sqlserver://RE2001/SQLEXPRESS:1433;databaseName=Adressverwalun g;integratedSecurity=true; Und das Leerzeichen evtl. entfernen Zitieren
Gast alexC++ Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 das leerzeichen hat er mir hier dazugemacht! habe den string kopiert, hat mich auch schon erstaunt mit 127.0.0.1:1433 funktioniert es auch nicht Zitieren
ksg9-sebastian Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 Ups..würd mal sagen dein Hostname ist falsch. Die MS-Docu sagt folgendes zu dem ConnectionString: String connectionUrl = "jdbc:sqlserver://localhost:1433;" + "databaseName=AdventureWorks;user=MyUserName;password=*****;"; Wäre in deinem Fall dann jdbc:sqlserver://localhost:1433;databaseName=Adressverwalung;integratedSecurity=true; Zitieren
Gast alexC++ Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 habe es schon mit localhost und mit 127.0.0.1 versucht, mit Portnummer und auch ohne! Zitieren
ksg9-sebastian Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 Versuch es so wie ich geschrieben hab. In deinem Connectionstring hängt nach dem Server (//RE2001/) noch "\SQLEXPRESS" dran, was meiner Meinung und der Dokumentation nach falsch ist. Copy&Past mit dem letzten von mir geposteten Connectionstring. Zitieren
Gast alexC++ Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 habe ich auch schon probiert! Da ich den Express Server habe, heißt das Ding dann so --> Rechnername/SQLEXPRESS da kann ich leider nichts machen! habe aber wie gesagt, schon genannte x mal probiert! Zitieren
carstenj Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 Hi, die DB läuft aber auch,oder? Und ist auch unter dem Port ansprechbar?! Sind manchmal so Dinge, die man übersieht. Zitieren
Gast alexC++ Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 ja die läuft, sie wird auch von einem andren programm (c#) benutzt Zitieren
ksg9-sebastian Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 Jop..kommst du per Commandline-Client oder ähnliches drauf? Aber wie der Rechner RE2001/SQLEXPRESS heißen kann wird mir wohl ein Rätzel bleiben Gruß Sebastian Zitieren
Gast alexC++ Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 was ist das? kenne ich leider nicht! ja das ding heißt leider so, ist von microsoft so vorgesehen! Zitieren
Cobinja Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 Hast du die Verbindungsmöglichkeiten vom SQLServer angepasst? Standardmäßig lässt die Express-Edition nämlich nur SharedMemory-Verbindungen zu, da kommst mit jdbc nicht weit. Du musst ihn also so konfigurieren, dass er Verbindungen auch über TCP entgegennimmt. Das machst du entweder unter Systemsteuerung->Verwaltung->Computerverwaltung oder mit dem SQL Management Studio Express Zitieren
Gast alexC++ Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 das hört sich interessant an, wo mache ich das denn genau? gruß Zitieren
Schmarrer Geschrieben 15. Oktober 2007 Geschrieben 15. Oktober 2007 Hi, also so viel ich weiß muss der Instanzname aufjedenfall mit dazu. Den MS SQL Server kenne ich, leider bin ich in Java nicht so fit, dass ich dir den Connection-String posten kann. Downloade dir mal von Microsoft das Management Studio, sofern noch nicht vorhanden. Hier kannst du dich auf das Datenbankmodul connecten, wober der Server so angegeben wird "Hostname\Instanz" So kannst du feststellen ob alle Dienste ordnungsgemäß laufen. Die TCP Connectioneigenschaft aktivierst du folgendermaßen: Start -> Programme -> SQL Server -> Konfigurationstools -> SQL Server Configuration Manager Hier musst du unter Netzwerkkonfiguration das Protokoll aktivieren. Gruß Zitieren
Gast alexC++ Geschrieben 18. Oktober 2007 Geschrieben 18. Oktober 2007 hallo, habe ich schon alles getan! funktioniert aber nicht! Zitieren
Schmarrer Geschrieben 18. Oktober 2007 Geschrieben 18. Oktober 2007 Also ich habs bei mir mal gerade nachgebaut. Und es klappt. Mein/DEIN Quellcode: import java.sql.*; public class _Connect { public static void main(String[] args) { String connectionUrl = "jdbc:sqlserver://localhost;" + //RE2001\\SQLEXPRESS; "databaseName=Adressverwalung;integratedSecurity=true;"; //User ID=sa;Password=dbms Connection con = null; Statement stmt = null; ResultSet rs = null; try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); con = DriverManager.getConnection(connectionUrl); String SQL = "SELECT * FROM Adresse"; stmt = con.createStatement(); rs = stmt.executeQuery(SQL); while (rs.next()) { System.out.println(rs.getString("Vorname") + " " + rs.getString("Nachname")); } } catch (Exception e) { e.printStackTrace(); } } } Probiers mal... Gruß Zitieren
Gast alexC++ Geschrieben 19. Oktober 2007 Geschrieben 19. Oktober 2007 com.microsoft.sqlserver.jdbc.SQLServerException: Es konnte keine TCP/IP-Verbindung mit dem Host hergestellt werden. java.net.ConnectException: Connection refused: connect at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source) at java.sql.DriverManager.getConnection(DriverManager.java:562) at java.sql.DriverManager.getConnection(DriverManager.java:208) at _Connect.main(_Connect.java:17) Zitieren
Schmarrer Geschrieben 19. Oktober 2007 Geschrieben 19. Oktober 2007 TCP ist aktiviert? Hast du danach auch den Dienst neu gestartet? Das musst du nämlich. Weil das hatte ich auch, dann hab ich TCP aktiviert, Dienst ("SQL Server (MSSQLSERVER)") neugestartet und schon hats geklappt Gruß Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.