2017-09-19 1 views
3

Je suis novice en programmation et j'ai créé ce serveur de discussion avec un écran de connexion qui extrait les données du serveur SQL. Il semblait bien quand testé dans mon ordinateur portable (qui est où la base de données est). Mais quand j'ai essayé d'utiliser pour exécuter le code sur un autre bureau,Connexion au serveur SQL refusée lors de la tentative de connexion à la base de données via un ordinateur distant

il a continué à dire:

"connexion TCP/IP pour héberger localhost, le port 2175 a échoué ..."

Je l'ai essayé de faire ces jusqu'à présent:

  • activer les protocoles TCP/IP
  • le port série à 1433
  • mis port dynamique à 2175
  • exécuter le navigateur SQL (mis "service local" intégré dans la section de compte)
  • redémarrer le serveur SQL (ensemble "service réseau" intégré dans la section de compte)
  • créer un tas de règles de port TCP (à la fois entrants et sortants - Autoriser tout)
  • créer des règles du programme de SQLServer (entrants et sortants - Autoriser tout)
  • ajouter SQLServer dans l'exception pare-feu

Pourtant, cela ne semble pas avoir d'effet.

Ceci est mon code pour se connecter à SQLServer:

public boolean connect(String SQL) { 
    String connectionUrl = "jdbc:sqlserver://localhost:2175;" + 
    "databaseName=TestConnection;integratedSecurity=True;"; 
    Connection con = null; 
    Statement stm = null; 
    ResultSet rs = null; 
    boolean check = false; 
    try { 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     con = DriverManager.getConnection(connectionUrl); 
     stm = con.createStatement(); 
     if (SQL.contains("update") || SQL.contains("insert") || SQL.contains("delete") || SQL.contains("UPDATE") || SQL.contains("INSERT") || SQL.contains("DELETE")) { 
      int clu = stm.executeUpdate(SQL); 
      if (clu == 0) 
       check = false; 
      else 
       check = true; 
     } 
     else { 
      rs = stm.executeQuery(SQL); 
      while (rs.next()) { 
       System.out.println(rs.getString(1) + " | " + rs.getString(2)); 
       check = true; 
      } 
     } 
    } catch (ClassNotFoundException | SQLException e) { 
     e.printStackTrace(); 
    } finally { 
     if (rs != null) try { rs.close(); } catch(Exception e) {} 
     if (stm != null) try { stm.close(); } catch(Exception e) {} 
     if (con != null) try { con.close(); } catch(Exception e) {} 
    } 

    return check; 
} 

J'utilise SQL Server 2016. Je sais des tonnes de sujets êtes les discuter sur ce problème, mais je ne peux pas sembler trouver la solution .

Je dois également mentionner: le bureau sur lequel j'essaye d'exécuter mon code n'a pas de serveur SQL installé. Est-ce nécessaire?

Répondre

5
String connectionUrl = "jdbc:sqlserver://localhost:2175;" + 
    "databaseName=TestConnection;integratedSecurity=True;"; 

ci-dessus signifie code, vous essayez de vous connecter à la base de données, qui est installé sur une même machine (à savoir localhost). Maintenant, si vous essayez de vous connecter au serveur distant, vous devez utiliser son adresse IP à la place. En outre, vous devez vous assurer qu'ils sont dans le même réseau (essayez de cingler cette machine en utilisant son adresse IP).

+0

Je ne le savais pas. Merci beaucoup :) –