web-dev-qa-db-fra.com

Comment puis-je utiliser le pilote MS JDBC avec MS SQL Server 2008 Express?

Ma configuration:

  • windows XP SP3
  • JDBC 2005
  • MS SQL Server 2008 Express, exposé 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 cela lève toujours une exception:

Java.sql.SQLException: No suitable driver

J'ai également essayé les URL suivantes:

localhost:1433/SQLEXPRESS2008

localhost/SQLEXPRESS2008

localhost

Mêmes résultats. De l'aide?

13
StoneHeart

Vous avez la mauvaise URL.

Je ne sais pas ce que vous entendez par "JDBC 2005". Quand j'ai regardé sur le site Microsoft, j'ai trouvé quelque chose appelé Microsoft SQL Server JDBC Driver 2.Vous allez vouloir celui-là - il comprend de nombreuses corrections et quelques améliorations de performances. [modifier: vous voudrez probablement le dernier pilote. Depuis mars 2012, le dernier pilote JDBC de Microsoft est JDBC 4.0]

Consultez les notes de version. Pour ce pilote, vous souhaitez:

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

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

Microsoft a changé le nom de 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, celui que 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 changé pour le formulaire que j'ai ici.

Cela se trouve dans les notes de publication du pilote JDBC.

29
Cheeso

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

3
Mritunjay
  1. Téléchargez le dernier pilote JDBC (c'est-à-dire sqljdbc4.0) à partir du site Web de Microsoft
  2. Écrivez 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. Compilez le programme et définissez le chemin d'accès aux classes jar: set classpath=C:\jdbc\sqljdbc4.jar;.; Si vous avez enregistré votre fichier jar dans C:\jdbc après téléchargement et extraction.

  4. Exécutez le programme et assurez-vous que votre service TCP/IP est activé. S'il n'est pas activé, procédez comme suit:
    1. Allez dans Démarrer -> Tous les programmes -> Microsoft SQL Server 2008 -> Outils de configuration -> SQL Server Configuration Manager
    2. Développez la configuration réseau du serveur SQL: choisissez votre instance MS SQL Server. MSQSLSERVER et activez TCP/IP.
    3. Redémarrez votre instance MS SQL Server. Cela peut également être fait à partir du menu contextuel de Microsoft SQL Server Management Studio au niveau racine de votre instance de serveur MS SQL
3
Pradyumna Swain

Le dernier pilote de connectivité JDBC MSSQL se trouve sur JDBC 4.

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

Cliquez avec le bouton droit sur le nom du projet -> Propriétés -> Java Build Path -> Libraries -> Add External Jars

Comme déjà indiqué par @Cheeso, la manière correcte d'accéder est jdbc: sqlserver: // server: port; DatabaseName = dbname

En attendant, veuillez trouver un exemple de classe pour accéder à MSSQL DB (2008 dans 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");
   }
}

J'espère que cela t'aides.

0
misguided

Instances nommées?

URL: jdbc: sqlserver: // [nom_serveur] [\ nomInstance] [: numéroPort] [; propriété = valeur]

Remarque: barre oblique inverse

0