2009-02-12 8 views
13

Ma configuration:Comment utiliser le pilote MS JDBC avec MS SQL Server 2008 Express?

  • Windows XP SP3
  • JDBC 2005
  • MS SQL Server 2008 Express, exposée via tcp/ip sur le port 1433
  • sqljdbc.jar dans le chemin de classe

J'ai essayé:

try { 
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); 
    con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433/SQLEXPRESS2008;databaseName=Test;selectMethod=cursor", "sa", ""); 
} 
catch (Exception e) { 
    e.printStackTrace(); 
} 

Mais il jette toujours une exception:

java.sql.SQLException: No suitable driver 

J'ai essayé aussi les urls suivantes:

localhost:1433/SQLEXPRESS2008 

localhost/SQLEXPRESS2008 

localhost 

Les mêmes résultats. Toute aide?

Répondre

27

Vous avez la mauvaise URL.

Je ne sais pas ce que vous voulez dire par "JDBC 2005". Quand j'ai regardé sur le site de Microsoft, j'ai trouvé quelque chose appelé le Microsoft SQL Server JDBC Driver 2.0. Vous allez vouloir celui-là - il comprend beaucoup de correctifs et quelques améliorations perf. [edit: vous allez probablement vouloir le dernier pilote. En Mars 2012, le dernier pilote JDBC de Microsoft est JDBC 4.0]

Vérifiez les notes de version. Pour ce pilote, vous voulez:

URL: jdbc:sqlserver://server:port;DatabaseName=dbname 
Class name: com.microsoft.sqlserver.jdbc.SQLServerDriver 

Il semble que vous ayez le nom de classe correct, mais l'URL est incorrecte.

Microsoft a modifié le nom de la classe et l'URL après sa version initiale d'un pilote JDBC. L'URL que vous utilisez va avec le pilote JDBC d'origine de Microsoft, l'un MS appelle la "version SQL Server 2000". Mais ce pilote utilise un nom de classe différent.

Pour tous les pilotes suivants, l'URL a été remplacée par la forme que j'ai ici.

Ceci est dans les notes sur l'édition du pilote JDBC.

+5

Apparemment, il existe un pilote v3.0 disponible (conforme à JDBC 4.0) http://msdn.microsoft.com/en-us/sqlserver/aa937724 – Nemi

+1

Oui, les informations contenues dans cette réponse sont désormais périmées. Je conseillerais aux développeurs d'aller sur le site MS et d'obtenir le dernier pilote.Lisez également les notes de publication pour vérifier le nom de la classe et l'URL. En ce moment, ils sont inchangés, mais il est logique de vérifier. – Cheeso

+1

En Mars 2012, le dernier pilote JDBC publié par Microsoft est v4.0: http://www.microsoft.com/en-us/download/details.aspx?id=11774 – Cheeso

-2

Vous pouvez essayer ce qui suit. Fonctionne très bien dans mon cas:

  1. Télécharger le courant jTDS JDBC Driver
  2. Put jtds-x.x.x.jar dans votre classpath.
  3. Copiez ntlmauth.dll dans windows/system32. Choisissez la DLL basée sur votre matériel x86, x64 ...
  4. L'URL de connexion est: 'jdbc: jtds: sqlserver: // localhost: 1433/YourDB', vous n'avez pas besoin de fournir un nom d'utilisateur et un mot de passe.

Espérons que ça aide.

+2

Ils demandent comment utiliser le pilote MS , pas le pilote JTDS. Désolé (-1) – javamonkey79

+0

La question ne dit pas clairement qu'il doit utiliser le pilote MS. Peut-être que le demandeur ne connaissait pas jTDS. Généralement, le jTDS est connu pour fonctionner mieux, donc peut-être pas une solution directe, mais une bonne alternative. – Adrian

+0

Merci de reporter une réponse de 7 ans. Vous êtes des champions. – raupach

3

Si votre valeur databaseName est correcte, utilisez ceci: DriverManger.getconnection("jdbc:sqlserver://ServerIp:1433;user=myuser;password=mypassword;databaseName=databaseName;")

+1

Ajout de ce 'microsoft:' me donne : 'java.sql.SQLException: Aucun pilote approprié trouvé pour jdbc: microsoft: sqlserver: // ...' – Baumann

+0

@Baumann Merci de m'avoir signalé. Mettra à jour la réponse – Mritunjay

0

Le dernier pilote de connectivité JDBC MSSQL se trouvent sur JDBC 4.0

Le fichier de classe doit être dans le chemin de classe. Si vous utilisez Eclipse, vous pouvez facilement faire la même chose en procédant comme suit ->

Clic droit Nom du projet -> Propriétés -> Chemin de génération Java -> Bibliothèques -> Ajouter des fichiers JAR externes

également comme cela a déjà été souligné par @Cheeso la bonne façon d'accéder est jdbc: sqlserver: // serveur: port; DatabaseName = dbname

Pendant ce temps, s'il vous plaît trouver un exemple de classe pour accéder à MSSQL DB (2008 mon cas).

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 

public class ConnectMSSQLServer 
{ 
    public void dbConnect(String db_connect_string, 
      String db_userid, 
      String db_password) 
    { 
     try { 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     Connection conn = DriverManager.getConnection(db_connect_string, 
        db_userid, db_password); 
     System.out.println("connected"); 
     Statement statement = conn.createStatement(); 
     String queryString = "select * from SampleTable"; 
     ResultSet rs = statement.executeQuery(queryString); 
     while (rs.next()) { 
      System.out.println(rs.getString(1)); 
     } 
     conn.close(); 
     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
    } 

    public static void main(String[] args) 
    { 
     ConnectMSSQLServer connServer = new ConnectMSSQLServer(); 
     connServer.dbConnect("jdbc:sqlserver://xx.xx.xx.xxxx:1433;databaseName=MyDBName", "DB_USER","DB_PASSWORD"); 
    } 
} 

Espérons que cela aide.

3
  1. Téléchargez le dernier pilote JDBC (c.-à-sqljdbc4.0) à partir du site Web de Microsoft
  2. Ecrire le programme comme suit:

    import java.sql.*; 
    class testmssql 
    { 
        public static void main(String args[]) throws Exception 
        { 
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
         Connection  con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433; 
           databaseName=chapter16","sa","123");//repalce your databse name and user name 
          Statement st=con.createStatement(); 
         ResultSet rs=st.executeQuery("Select * from login");//replace your table name 
         while(rs.next()) 
         { 
          String s1=rs.getString(1); 
          String s2=rs.getString(2); 
          System.out.println("UserID:"+s1+"Password:"+s2); 
         } 
         con.close(); 
        } 
    } 
    
  3. recompiler le programme et mis le pot classpath à savoir: set classpath=C:\jdbc\sqljdbc4.jar;.; Si vous avez enregistré votre fichier jar en C:\jdbc après le téléchargement et l'extraction.

  4. Exécutez le programme et assurez-vous que votre service TCP/IP est activé. Si pas activé, procédez comme suit:
    1. Allez dans Démarrer -> Tous les programmes -> Microsoft SQL Server 2008 -> Outils de configuration -> Configuration SQL Server Manager
    2. Développez Configuration réseau Sql Server: choisissez votre MS SQL Server Instance à savoir. MSQSLSERVER et activer TCP/IP.
    3. Redémarrez votre instance MS SQL Server. Cela peut aussi être fait à partir du menu clic droit de Management Studio Microsoft SQL Server au niveau racine de votre instance de serveur MS SQL
0

des instances nommées?

URL: jdbc: sqlserver: // [nom_serveur] [\ instanceName] [: portNumber] [; propriété = valeur]

Note: barre oblique inverse

Questions connexes