2009-02-12 11 views
13

Mi configuración:¿Cómo puedo usar el controlador MS JDBC con MS SQL Server 2008 Express?

  • Windows XP SP3
  • JDBC 2005
  • MS SQL Server 2008 Express, expuesta a través de TCP/IP en el puerto 1433
  • sqljdbc.jar en la ruta de clase

Probé:

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(); 
} 

Pero siempre se produce una excepción:

java.sql.SQLException: No suitable driver 

También probé las siguientes direcciones:

localhost:1433/SQLEXPRESS2008 

localhost/SQLEXPRESS2008 

localhost 

mismos resultados. ¿Alguna ayuda?

Respuesta

27

Tiene una URL incorrecta.

No sé a qué te refieres con "JDBC 2005". Cuando miré en el sitio de Microsoft, encontré algo llamado Microsoft SQL Server JDBC Driver 2.0. Te va a interesar, incluye muchas correcciones y algunas mejoras de rendimiento. [editar: probablemente querrás el último controlador. A partir de marzo de 2012, el último controlador JDBC de Microsoft es JDBC 4.0]

Revise las notas de la versión. Para este controlador, usted quiere:

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

Parece que tiene el nombre de clase correcto, pero la URL es incorrecta.

Microsoft cambió el nombre de la clase y la URL después de su lanzamiento inicial de un controlador JDBC. La URL que está utilizando va con el controlador JDBC original de Microsoft, el que MS llama la "versión de SQL Server 2000". Pero ese controlador usa un nombre de clase diferente.

Para todos los controladores posteriores, la URL cambió al formulario que tengo aquí.

Esto se encuentra en las notas de la versión del controlador JDBC.

+5

Parece que hay un controlador v3.0 disponible ahora (que es compatible con JDBC 4.0) http://msdn.microsoft.com/en-us/sqlserver/aa937724 – Nemi

+1

Sí, la información en esta respuesta no está actualizada. Aconsejo a los desarrolladores que accedan al sitio web de MS y obtengan el último controlador.Lea también las notas de la versión para verificar el nombre de clase y la URL. En este momento, no han cambiado, pero tiene sentido verificarlo. – Cheeso

+1

A partir de marzo de 2012, el último controlador JDBC publicado por Microsoft es v4.0: http://www.microsoft.com/en-us/download/details.aspx?id=11774 – Cheeso

-2

Puede intentar lo siguiente. Funciona bien en mi caso:

  1. Descargar la corriente jTDS JDBC Driver
  2. Put jtds-x.x.x.jar en la ruta de clases.
  3. Copie ntlmauth.dll a windows/system32. Elija el archivo dll basado en su hardware x86, x64 ...
  4. La URL de conexión es: 'jdbc: jtds: sqlserver: // localhost: 1433/YourDB', no es necesario que proporcione el nombre de usuario y la contraseña.

Espero que ayude.

+2

Están pidiendo cómo utilizar el controlador de MS , no el controlador JTDS. Lo sentimos (-1) – javamonkey79

+0

La pregunta no es clara dice que tiene que usar el controlador MS. Tal vez el preguntador no sabía jTDS. En general, se sabe que el jTDS funciona mejor, por lo que tal vez no sea una solución directa, sino una buena alternativa. – Adrian

+0

Gracias por rechazar una respuesta de 7 años. Ustedes son campeones. – raupach

3

Si su valor databaseName es correcta, entonces utilizar esto: DriverManger.getconnection("jdbc:sqlserver://ServerIp:1433;user=myuser;password=mypassword;databaseName=databaseName;")

+1

Agregando esto 'microsoft:' me da : 'java.sql.SQLException: No se encontró un controlador adecuado para jdbc: microsoft: sqlserver: // ...' – Baumann

+0

@Baumann Gracias por señalar. Actualizará la respuesta – Mritunjay

0

El controlador más reciente de la conectividad JDBC MSSQL se puede conocer en JDBC 4.0

El archivo de clase debe estar en la ruta de clase. Si está utilizando Eclipse se puede hacer fácilmente el mismo de la siguiente manera ->

Haga clic derecho Nombre del proyecto -> Propiedades -> Java Build Path -> Bibliotecas -> Añadir tarros externos

también como ya se ha señalado por @Cheeso la forma correcta de acceso es jdbc: sqlserver: // servidor: puerto; DatabaseName = nombredb

mientras tanto por favor, encontrar una clase de muestra para acceder a MSSQL DB (2008 en mi caso).

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"); 
    } 
} 

Espero que esto ayude.

3
  1. descargar el controlador más JDBC (es decir sqljdbc4.0) en el sitio web de Microsoft
  2. Escribir el programa de la siguiente manera:

    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. compilar el programa y establezca el saber tarro de ruta de clases: set classpath=C:\jdbc\sqljdbc4.jar;.; Si ha guardado su archivo jar en C:\jdbc después de descargar y extraer.

  4. Ejecute el programa y asegúrese de que su servicio TCP/IP esté habilitado. Si no está activada, a continuación, siga estos pasos:
    1. Vaya a Inicio -> Todos los programas -> Microsoft SQL Server 2008 - Herramientas> Configuración -> configuración de SQL Server
    2. Expanda Configuración de red del servidor SQL: elija su MS SQL Server Instancia a saber. MSQSLSERVER y habilite TCP/IP.
    3. Reinicie su instancia de MS SQL Server. Esto se puede hacer también desde el menú del botón derecho del Estudio de Gestión de Microsoft SQL Server en el nivel raíz de la instancia del servidor de MS SQL
0

instancias con nombre? // [nombre del servidor] [\ instanceName] [:: portNumber]

URL: jdbc: sqlserver [; propiedad = valor]

Nota: barra hacia atrás

Cuestiones relacionadas