Conexión JDBC contra SQL Server y clases de acceso básico

CONEXI?“N DE JAVA CON SQL SERVER

Para realizar una conexión contra SQL Server 2005, es necesario descargar y usar el driver que para este cometido ha desarrollado Microsoft (Controlador JDBC de Microsoft SQL Server 2005).

El controlador JDBC no forma parte del SDK de Java. Por consiguiente, debemos establecer la ruta de clase para que incluya el archivo sqljdbc.jar si deseamos usarlo. Si en la ruta de clase falta una entrada para sqljdbc.jar, la aplicación genera la excepción común «Clase no encontrada».

El archivo sqljdbc.jar se instala en la siguiente ubicación:

<directorio de instalación>\sqljdbc_<version>\<language>\sqljdbc.jar

El siguiente es un ejemplo de la instrucción CLASSPATH usada para una aplicación de Windows:

CLASSPATH =.;C:\Program Files\Microsoft SQL Server 2005 JDBC Driver\sqljdbc_1.1\enu\sqljdbc.jar

El siguiente es un ejemplo de la instrucción CLASSPATH usada para una aplicación de Unix/Linux:

CLASSPATH =.:/home/usr1/mssqlserver2005jdbc/Driver/sqljdbc_1.1/enu/sqljdbc.jar

Nota: En los sistemas de Windows, los nombres de directorio mayores que 8,3 o los nombres de carpetas con espacios pueden causar problemas con las rutas de clase. Si vemos que se da este tipo de problema, debemos mover temporalmente el archivo sqljdbc.jar a un nombre de directorio sencillo como C:\Temp, cambiar la ruta de clase y determinar si de este modo se corrige el problema.

Aplicaciones que se ejecutan directamente en el símbolo del sistema

La ruta de clase se configura en el sistema operativo. Anexamos sqljdbc.jar a la ruta de clase del sistema. Además, podemos especificar la ruta de clase en la línea de comandos de Java que ejecuta la aplicación con la opción java -classpath .

Aplicaciones que se ejecutan en un IDE

Cada proveedor de IDE ofrece un método distinto para establecer la ruta de clase en el IDE. Establecer sin más la ruta de clase en el sistema operativo no funciona. Debemos agregar sqljdbc.jar a la ruta de clase del IDE.

Servlets y JSP

Los servlets y JSP se ejecutan en un motor de servlet/JSP como Tomcat. La ruta de clase se debe establecer de acuerdo con la documentación del motor de servlet/JSP. Establecer sin más la ruta de clase en el sistema operativo no funciona. Algunos motores de servlet/JSP incluyen pantallas de configuración que puede utilizar para establecer la ruta de clase del motor. En este caso, debemos adjuntar el archivo JAR del controlador JDBC correcto a la ruta de clase del motor y reiniciar el motor. En otras situaciones, podemos configurar el controlador copiando sqljdbc.jar en un directorio específico, con extensión lib, durante la instalación del motor. La ruta de clase del controlador del motor también se puede especificar en un archivo de configuración específico del motor.

Enterprise Java Beans

Enterprise Java Beans (EJB) se ejecuta en un contenedor EJB. Los contenedores EJB son distribuidos por varios proveedores. Los subprogramas Java se ejecutan en un explorador, pero se descargan desde un servidor web. Tenemos que copiar sqljdbc.jar en la raíz del servidor web y especificar el nombre del archivo JAR en la ficha de archivo HTML del subprograma (por ejemplo, <applet ... archive=sqljdbc.jar>).

Establecer una conexión sencilla con una base de datos

Para establecer una conexión a una base de datos con la clase DriverManager, debemos registrar primero el controlador como en el ejemplo siguiente:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

Una vez cargado el controlador, puede establecer una conexión con una URL de conexión:

String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
   "databaseName=AdventureWorks;user=MyUserName;password=*****;";
Connection con = DriverManager.getConnection(connectionUrl);

Si conectamos contra un servidor SQL Express, seguramente tengamos que añadir el nombre de la instancia:

String url = «jdbc:sqlserver://localhost;instanceName=SQLEXPRESS;databaseName=nombrebd;user=usuario;password=********;»;

CLASES JDBC DE ACCESO B??SICO A BASES DE DATOS

Las clases fundamentales de JDBC son, Statement y ResultSet. La clase java.sql.Statement es la más básica de las tres que representan sentencias SQL. El método executeQuery() toma una cadena SQL como argumento y devuelve un objeto ResultSet. Por otro lado, las sentencias de actualización se ejecutan con el método executeUpdate() el cual además devuelve el número de filas afectadas.

La clase Statement proporciona un método execute() para operaciones en las que no se sepa si el código SQL es una consulta o una actualización. Esto suele pasar cuando la aplicación está ejecutando sentencias SQL creadas dinámicamente. Si la sentencia devuelve una fila de la base de datos, el método devuelve true, y false en caso contrario. La aplicación puede entonces usar el método getResultSet() para obtener la fila devuelta.

java.sql.Resultset es un conjunto de filas de datos que devuelve una consulta. La clase proporciona simplemente una serie de métodos para recuperar columnas de los resultados de una consulta. Los métodos para obtener una columna tienen la siguiente sintaxis:

type get type(int | String)

El argumento representa el número o el nombre de la columna deseada. Un curioso efecto colateral de este diseño es que se pueden almacenar valores de un tipo en la base de datos y recuperarlos en otro tipo de valor distinto. Por ejemplo, si necesitamos que un dato Date (fecha) de la base de datos aparezca como cadena (String) podemos llamar a result_set.getString(1) en vez de a result_set.getDate(1).

Como la clase ResultSet sólo maneja una fila de la base de datos cada vez, la clase proporciona el método next() para invocar a la siguiente fila. Si devuelve true, tiene otra fila que procesar, y cualquier llamada subsiguiente que realizara al objeto ResultSet hará referencia a la siguiente fila. Si no quedan más filas, devolverá false.

* Extraído de la documentación de la clase JDBC de acceso a SQL Server de Microsoft y del libro Programación de bases de datos con JDBC y Java de George Reese

Deja una respuesta