62 votes

M'aider à créer une jTDS chaîne de connexion

mon nom d'instance sql server est MYPC\SQLEXPRESS et je suis en train de créer un jTDS chaîne de connexion pour se connecter à la base de données "Blog". Quelqu'un peut-il svp m'aider à le réaliser ?

Je suis en train de faire comme ceci:

DriverManager.getConnection("jdbc:jtds:sqlserver://127.0.0.1:1433/Blog", "user", "password");

et j'obtiens ceci:

 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

123voto

Pascal Thivent Points 295221

Comme détaillé dans la jTDS foire aux Questions, le format de l'URL pour jTDS est:

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

Donc, pour vous connecter à une base de données appelée "Blog" hébergé par un Serveur MS SQL server en cours d'exécution sur MYPC, vous pouvez vous retrouver avec quelque chose comme ceci:

jdbc:jtds:sqlserver://MYPC:1433/Blog;instance=SQLEXPRESS;user=sa;password=s3cr3t

Ou, si vous préférez utiliser getConnection(url, "sa", "s3cr3t"):

jdbc:jtds:sqlserver://MYPC:1433/Blog;instance=SQLEXPRESS

EDIT: Concernant votre Connection refused d'erreur, vérifiez que vous êtes en cours d'exécution de SQL Server sur le port 1433, que le service est en cours d'exécution et que vous n'avez pas de pare-feu bloque les connexions entrantes.

44voto

acdcjunior Points 19898

Vraiment, vraiment, vraiment vérifier si le protocole TCP/IP est activé dans votre local instance SQLEXPRESS.

Suivez ces étapes pour vous assurer que:

  • Ouvrir le "Gestionnaire de Configuration Sql Server" dans le "Menu Démarrer\Programmes\Microsoft SQL Server 2012\Outils de Configuration\"
  • Développez "Configuration du Réseau SQL Server"
  • Aller dans les "Protocoles pour SQLEXPRESS"
  • Activer le protocole TCP/IP

Si vous avez un problème, consultez cet article de blog pour plus de détails, car il contient des captures d'écran et beaucoup plus d'informations.

Vérifiez également si le "SQL Server Browser" service windows est activé et en cours d'exécution:

  • Allez dans Panneau de configuration -> Outils d'Administration -> Services
  • Ouvrir "SQL Server Browser" le service et l'activer (le faire en manuel ou automatique, en fonction de vos besoins)
  • Le démarrer.

C'est tout.

Après j'ai installé une nouvelle SQLExpress locale, tout ce que j'avais à faire était pour activer le protocole TCP/IP et démarrer le service SQL Server Browser.

Ci-dessous un code que j'utilise pour tester la SQLEXPRESS connexion locale. Bien sûr, vous devez modifier l'adresse IP, DatabaseName et d'utilisateur/mot de passe si nécessaire.:

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JtdsSqlExpressInstanceConnect {
    public static void main(String[] args) throws SQLException {
        Connection conn = null;
        ResultSet rs = null;
        String url = "jdbc:jtds:sqlserver://127.0.0.1;instance=SQLEXPRESS;DatabaseName=master";
        String driver = "net.sourceforge.jtds.jdbc.Driver";
        String userName = "user";
        String password = "password";
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, userName, password);
            System.out.println("Connected to the database!!! Getting table list...");
            DatabaseMetaData dbm = conn.getMetaData();
            rs = dbm.getTables(null, null, "%", new String[] { "TABLE" });
            while (rs.next()) { System.out.println(rs.getString("TABLE_NAME")); }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            conn.close();
            rs.close();
        }
    }
}

Et si vous utilisez Maven, ajoutez ceci à votre pom.xml:

<dependency>
    <groupId>net.sourceforge.jtds</groupId>
    <artifactId>jtds</artifactId>
    <version>1.2.4</version>
</dependency>

9voto

Courtney Faulkner Points 909

jdbc:jtds:sqlserver://x.x.x.x/database remplaçant x.x.x.x avec l'adresse IP ou le nom d'hôte de votre ordinateur SQL Server.

jdbc:jtds:sqlserver://MYPC/Blog;instance=SQLEXPRESS

ou

jdbc:jtds:sqlserver://MYPC:1433/Blog;instance=SQLEXPRESS

Si vous êtes désireux de définir le nom d'utilisateur et le mot de passe dans la chaîne de connexion trop au lieu de par rapport à un objet de connexion séparément:

jdbc:jtds:sqlserver://MYPC/Blog;instance=SQLEXPRESS;user=foo;password=bar

(Mis à jour mes informations incorrectes et d'ajouter une référence à la syntaxe de l'instance)

4voto

Pratik Bhatt Points 486

Un coup de feu dans l'obscurité, mais De la porte de votre message d'erreur, il semble que l'instance de sql server n'est pas en cours d'exécution sur le port 1433 ou quelque chose bloque les demandes à port

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X