Erstellen Sie eine jTDS-Verbindungszeichenfolge
mein sql server Instanz name MEINPC\SQLEXPRESS und ich bin versucht zu erstellen jTDS Verbindungszeichenfolge zum verbinden mit der Datenbank 'Blog'. Kann bitte jemand mir helfen, zu erreichen, dass?
Ich versuche zu tun, wie diese:
DriverManager.getConnection("jdbc:jtds:sqlserver://127.0.0.1:1433/Blog", "user", "password");
und ich bekomme diese:
java.sql.SQLException: Network error IOException: Connection refused: connect
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:395)
at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at SqlConnection.Connect(SqlConnection.java:19)
at main.main(main.java:11)
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:305)
at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:255)
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:323)
... 6 more
Du musst angemeldet sein, um einen Kommentar abzugeben.
Detailliert in die jTDS Frequenlty Gestellte Fragen, das URL-format für die jTDS ist:
So, die Verbindung zu einer Datenbank namens "Blog", gehostet von einem MS SQL Server auf
MYPC
können Sie am Ende mit etwas wie dieses:Oder, wenn Sie lieber
getConnection(url, "sa", "s3cr3t")
:EDIT: Über Ihre
Connection refused
Fehler, überprüfen Sie, ob Sie mit SQL Server über port 1433, ob der Dienst ausgeführt wird und dass Sie nicht durch eine firewall blockiert eingehende verbindungen.instance
Eigenschaft für datasources und nicht hinzufügen, wird die Instanz auf demdatabaseName
.Wirklich, wirklich, wirklich überprüfen, ob die TCP/IP-Protokoll aktiviert ist in Ihrem lokalen SQLEXPRESS-Instanz.
Befolgen Sie diese Schritte, um sicherzustellen:
Wenn Sie irgendein problem haben, überprüfen Sie in diesem blog-post für details, wie es enthält screenshots und viel mehr info.
Prüfen Sie auch, ob der "SQL Server Browser" windows-Dienst aktiviert ist und ausgeführt:
Das ist es.
Installiert, nachdem ich einen frischen, lokalen SQLExpress, alles, was ich zu tun hatte, wurde zum aktivieren von TCP/IP und starten Sie den SQL Server-Browser-Dienst.
Unten ein code, den ich zum testen verwenden die lokalen SQLEXPRESS-Verbindung. Natürlich, Sie sollten ändern Sie die IP-Adresse, Datenbankname und Benutzer/Kennwort wie erforderlich.:
Und wenn Sie Maven, fügen Sie diese zu Ihrem pom.xml:
jdbc:jtds:sqlserver://x.x.x.x/database
ersetzenx.x.x.x
mit der IP oder den Hostnamen der SQL Server-Maschine.jdbc:jtds:sqlserver://MYPC/Blog;instance=SQLEXPRESS
oder
jdbc:jtds:sqlserver://MYPC:1433/Blog;instance=SQLEXPRESS
Wenn Sie wollen, legen Sie den Benutzernamen und das Kennwort in der Verbindungszeichenfolge zu, anstatt gegen Sie ein connection-Objekt separat:
jdbc:jtds:sqlserver://MYPC/Blog;instance=SQLEXPRESS;user=foo;password=bar
(Aktualisiert meine falsche Informationen und Verweis hinzufügen, um die Instanz-syntax)
Ein Schuss im Dunkeln, aber
Von den blicken von Ihrem Fehlermeldung, es scheint, dass entweder die SQL Server-Instanz läuft nicht auf port 1433 oder etwas blockiert die Anfragen an diesen port
SQLServer läuft die default-Instanz über port 1433. Wenn Sie den port angeben, als port 1433, der SQL Server wird nur look für die Standard-Instanz. Der name der default-Instanz erstellt wurde, bei der Installation und in der Regel ist SQLEXPRESSxxx_xx_ENU.
Den Instanz-name entspricht auch dem Namen des Ordners erstellt, in Programme -> Microsoft SQL Server. Also, wenn Sie schauen und sehen einen Ordner mit dem Namen SQLEXPRESSxxx_xx_ENU es ist die Standard-Instanz.
Ordnern MSSQL12.myInstanceName (für SQL Server 2012) sind benannte Instanzen von SQL Server und sind nicht Zugriff über port 1433.
Also, wenn Ihr Programm ist der Zugriff auf eine Standard-Instanz in der Datenbank, geben Sie port 1433, und können Sie nicht brauchen, um den Namen der Instanz angeben.
Wenn Ihr Programm Zugriff auf eine benannte Instanz (nicht die Standard-Instanz) in der Datenbank NICHT Sie den port angeben, aber Sie müssen den Namen der Instanz angeben.
Ich hoffe, das klärt die Verwirrung, die aus den oben genannten Fehler angezeigt.