Conexión entre Java y SQL Server 2005
Viendo que no había formulado un ejemplo para tal función, hoy decidí hace este pequeño código para ir empezando con ello.
Nada fuera de lo normal a otros tipos de conexiones yo en mi caso he utilizado los siguientes elementos:
- Java 1.6
- JRE 1.6
- SQL Server 2005
Adicional a esos tres elementos me he descascardo el driver JDBC que soporta SQL server 2005 desde su pagina principal.
Una vez descargado el driver que por cierto es un zip, lo descomprimimos. En él vamos a encontrar dos archivos jar:
- sqljdbc4.jar
- sqljdbc.jar
Únicamente agregamos el sqljdbc4.jar al proyecto
Con ayuda de SQL Server Management Studio he creado una base de datos llamada Google, un usuario nombrado como sa y la contrasena asignada como adminadmin.
Creamos la conexión:
DriverManager.registerDriver( new com.microsoft.sqlserver.jdbc.SQLServerDriver() );
Connection connection = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=Google", "sa", "adminadmin");
El String de conexión es mas que claro, pero veamos cuales son los argumentos:
- jdbc:sqlserver : es el protocolo de la conexión, es una obligación ponerlo
- localhost : es el servidor al que nos vamos a conectar, en este caso la base de datos y la aplicación están la misma pc.
- 1433 : el puesto donde escucha el servicio de SQL Server 2005 (el puerto 1433 viene por defecto)
- databaseName=Google : es el parámetro de la base datos, la palabra “Google” puede cambiarse por otro nombre, según sea su nombre de base de datos.
Por último probamos la conexión:
if (connection != null) {
System.out.println();
System.out.println("Successfully connected");
System.out.println();
// Meta data
DatabaseMetaData meta = connection.getMetaData();
System.out.println("\nDriver Information");
System.out.println("Driver Name: " + meta.getDriverName());
System.out.println("Driver Version: " + meta.getDriverVersion());
System.out.println("\nDatabase Information ");
System.out.println("Database Name: " + meta.getDatabaseProductName());
System.out.println("Database Version: " + meta.getDatabaseProductVersion());
}
Si todo ha salido bien, y hemos establecido una conexión la aplicación debería imprimir algo como esto:
Driver Information
Driver Name: Microsoft SQL Server JDBC Driver 2.0
Driver Version: 2.0.1803.100
Database Information
Database Name: Microsoft SQL Server
Database Version: 9.00.1399
Errores encontrados durante la creación de la conexión
Mientras trataba de crear la conexión me encontre con varios problemas, y bueno, investigando dí con la solución. Acá voy a poner cuáles fueron y su resolución (al menos para mí).
- Use the sqljdbc4.jar class library, which provides support for JDBC 4.0.”
Al descomprimir el zip del driver, cometí el error de agregar los dos jars mencionados al principio de éste post. La solución: eliminar el jar sqljdbc.jar del proyecto.
- The TCP/IP connection to the host has failed. java.net.ConnectException: Connection refused: connect
Al parecer este error se debe a que el servicio de SQL server no acepta conexiones así no más, y por lo tanto, el protoco TCP/IP esta desabilitado por medio de SQL Server. La solución que encontré fue la siguiente, abrir SQL Server Configuration Manager, luego seleccionar la opción Protocols for SQL SQLEXPRESS, seleccionas las propiedades para TCP/IP; luego seleccionas el tab IP Adresses, por último asignarle el valor 1433 a la propiedad IPAll. Y claro, no olvidarse de dar clic derecho sobre TCP/IP
y habiliar ésta opción.
- WARNING: Failed to load the sqljdbc_auth.dll
El driver JDBC soporta el uso de dos tipos de autentificación integrada sobre Windows a través del argumento de conexión integratedSecurity. Para usar la autentificación integrada se debe copiar el archivo sqljdbc_auth.dll al directorio de WINDOWS. Si embargo, para evitarme cualquier tipo de error también lo he copiado en el directorio system32 y en la carpeta root de mi proyecto.
Nota: En un procesador de 32 bits, se debe usar el sqljdbc_auth.dll del folder auth/x86. Un procesar de 64 bits debe usar el archivo sqljdbc_auth.dll del folder x64.
Adjunto las fuentes del proyecto:
Excelente tu aporte, uno de los errores que mencionas me aparecia y tu solucion me ayudo a realizar exitosamente la conexion, Muchas Gracias!!
http://jonathan-palomino.blogspot.com/ ahi dejo el tuto de como realizar la coneccion correctamente
Hola, quien hizo este tutorial dijo:
luego seleccionas el tab IP Adresses
Pero te falto algo. Me ocurre el mismo error, pero no se. Dijiste eso, pero no que se hace ahi.
GRacias