JDBC JDBC (Java Database Connectivity) es un API para trabajar con bases de datos desde Java, independientemente de la base de datos a la que accedemos. A la hora de conectarnos a una base de datos usando JDBC usamos un driver intermedio, que no es más que una clase ofrecida por el vendedor que implementa la interfaz Driver. Cuando se crea una instancia de una de estas clases Driver, esta se registra con el DriverManager (gestor de drivers) que es la encargada de decidir qué driver se ha de utilizar para acceder a tal o cual BBDD. El driver para trabajar con bases de datos MySQL, por ejemplo, es com.mysql.jdbc.Driver. A partir de la clase DriverManager, a través del método estático getConnection(String url, String usuario, String password), obtenemos el objeto Connection que representa la conexión a la base de datos a través del Driver que el DriverManager ha seleccionado. Si la base de datos permitiera acceso anónimo, se podría usar una versión de getConnection que sólo requiere un parámetro String con la URL. Para hacer consultas a la base de datos utilizamos el método executeQuery(String consulta) del objeto Statement, que se obtiene a partir de Connection con createStatement(). Al ejecutar la consulta se obtiene un objeto ResultSet (conjunto resultado) con los campos de las tuplas que cumplen las condiciones de la consulta: Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection con = DriverManager.getConnection("jdbc:mysql://localhost/mibbdd", "pepe", "123"); Statement st = con.createStatement(); ResultSet rs = st.executeQuery("SELECT * FROM entradas"); while(rs.next()) System.out.prinln("Titulo: " + rs.getString("titulo")); Como vemos, nos movemos por cada uno de los resultados del ResultSet usando el método next, que devolverá false cuando no existan más resultados. Para acceder a los valores de los campos de la tupla actual se usan métodos de la forma getTipoDato(String nombreColumna). Si lo que queremos hacer es modificar la base de datos (usar UPDATE, DELETE o INSERT) en lugar de usar el método executeQuery, llamaremos a executeUpdate(String consulta), que nos devuelve el número de tuplas de la base de datos que han sido afectadas por la operación. Por último, cuando terminemos de trabajar con ellos deberemos cerrar el ResultSet, Statement y Connection (cerrar la conexión en sí debería propiciar que se cerrara también el Statement y ResultSet, pero es buena práctica llamar al método close manualmente para cada uno de ellos, porque esto no tiene por qué ser siempre así). Ahora bien, la iteración con la base de datos es muy costosa, y es siempre interesante decrementar el tiempo y los recursos que vamos a necesitar. Por eso, una opción consiste en utilizar el objeto PreparedStatement en lugar de Statement si vamos a utilizar a menudo una misma consulta. Con PreparedStatement el motor de la BBDD compila las consultas (que se pasan al crear el objeto PreparedStatement, y no al llamar al método que ejecuta la consulta), que deberán tener el símbolo ? donde se vayan a insertar los valores; y se utilizan métodos de la forma setTipoValor(int posicion, Tipo valor) para indicar estos valores antes de hacer la consulta. Veamos un ejemplo: PreparedStatement ps = con.prepareStatement("INSERT VALUES (?, ?) INTO usuarios"); ps.setString(1, "Pepe"); ps.setString(2, "García"); ps.executeUpdate(); ps.setString(1, "Ramón"); ps.setString(2, "Gómez"); ps.executeUpdate();. Usar el controlador JDBC SQL Server 2008 R2 Otras versiones En esta sección se proporciona una serie de instrucciones rápidas para establecer una conexión sencilla a una base de datos de SQL Server con el controlador JDBC de Microsoft SQL Server. Antes de establecer la conexión a una base de datos de SQL Server, SQL Server se debe instalar en el equipo local o en un servidor y el controlador JDBC se debe instalar en el equipo local. Aplicaciones que se ejecutan directamente en el símbolo del sistema La ruta de clase se configura en el sistema operativo. Anexe sqljdbc.jar o sqljdbc4.jar a la ruta de clase del sistema. Además, puede 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. Debe agregar sqljdbc.jar o sqljdbc4.jar a la ruta de clase IDE. Establecer una conexión sencilla con una base de datos Mediante la biblioteca de clases sqljdbc.jar, primero las aplicaciones deben registrar el controlador del modo siguiente: Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Una vez cargado el controlador, puede establecer una conexión con una URL de conexión y el método getConnection de la clase DriverManager: Copiar String connectionUrl = "jdbc:sqlserver://localhost:1433;" + "databaseName=AdventureWorks;user=MyUserName;password=*****;"; Connection con = DriverManager.getConnection(connectionUrl); En la API 4.0 de JDBC, el método DriverManager.getConnection se ha mejorado para que se carguen los controladores JDBC automáticamente. Por tanto, no es necesario que las aplicaciones llamen al método Class.forName para registrar o cargar el controlador cuando se use la biblioteca de clases sqljdbc4.jar. Cuando se llama al método getConnection de la clase DriverManager, se encuentra un controlador apropiado en el conjunto de controladores JDBC. El archivo sqljdbc4.jar incluye el archivo "META-INF/services/java.sql.Driver", que contiene el com.microsoft.sqlserver.jdbc.SQLServerDriver como un controlador registrado. Las aplicaciones existentes, que actualmente cargan los controladores usando el método Class.forName, seguirán trabajando sin modificación. Introducción al controlador JDBC SQL Server 2008 R2 Otras versiones El controlador JDBC de Microsoft SQL Server es un controlador compatible con Java Database Connectivity (JDBC) 4.0 que proporciona un acceso confiable a los datos de las bases de datos de Microsoft SQL Server. El controlador JDBC puede tener acceso a muchas de las características de SQL Server 2005, incluidas la creación de reflejo de la base de datos y tipos de datos XML, definidos por el usuario y de gran valor; asimismo, es compatible con el nuevo aislamiento de transacción de instantánea. Además, el controlador JDBC admite también el uso de la autenticación. En el controlador JDBC de SQL Server, se ha incorporado compatibilidad para algunas características de SQL Server 2008. Para obtener más información, vea Novedades del controlador JDBC. Los temas de esta sección proporcionan una introducción general al controlador JDBC, incluidos los requisitos necesarios del sistema para usarlo, cómo se puede usar y dónde encontrar información adicional. ODB Orígenes de datos ODBC: ¿Qué es un origen de datos? A un origen de datos ODBC (origen de datos ODBC: datos e información necesaria para tener acceso a esos datos desde programas y bases de datos que admitan el protocolo ODBC (conectividad abierta de bases de datos).), por ejemplo, una base de datos y el servidor donde reside, se tiene acceso a través de un controlador de Conectividad abierta de base de datos (ODBC (Conectividad abierta de bases de datos): método estándar para compartir datos entre bases de datos y programas. Los controladores ODBC utilizan SQL (Lenguaje de consulta estructurado) para obtener acceso a datos externos.) (ODBC). Un origen de datos está formado por la procedencia de los datos y la información de conexión necesaria para tener acceso a los mismos. Ejemplos de orígenes de datos son Microsoft Access, Microsoft SQL Server, Oracle RDBMS, una hoja de cálculo y un archivo de texto. Ejemplos de información de conexión son la ubicación del servidor, el nombre de la base de datos, el Id. de inicio de sesión, la contraseña y diversas opciones de controlador ODBC que describen cómo conectarse al origen de datos. En la arquitectura ODBC, una aplicación (como Access o un programa de Microsoft Visual Basic) se conecta al Administrador de controladores ODBC que, a su vez, utiliza un controlador ODBC específico (por ejemplo, el controlador ODBC de Microsoft SQL) para conectarse a un origen de datos (en este caso, una base de datos de Microsoft SQL Server (base de datos SQL: base de datos basada en el lenguaje SQL, lenguaje de consulta estructurado.)). En Access, los orígenes de datos ODBC se utilizan para conectarse a orígenes de datos externos a Access que no tienen controladores integrados. Para conectarse a estos orígenes de datos, siga el procedimiento que se indica a continuación: Instale el controlador ODBC apropiado en el equipo que contenga el origen de datos. Defina un nombre de origen de datos (DSN) utilizando el Administrador de orígenes de datos ODBC para almacenar la información de conexión en el Registro de Microsoft Windows o en un archivo DSN, o bien una cadena de conexión en código de Visual Basic para pasar la información de conexión directamente al Administrador de controladores ODBC. Orígenes de datos de equipos Los orígenes de datos de equipos almacenan información de conexión en el registro de Windows de un determinado equipo con un nombre definido por el usuario. Los orígenes de datos de equipos sólo se pueden utilizar en el equipo en que estén definidos. Hay dos tipos de orígenes de datos de equipos , a saber, del usuario y del sistema. Los orígenes de datos del usuario sólo pueden ser utilizados por el usuario actual y únicamente los puede ver dicho usuario. Los orígenes de datos del sistema pueden ser utilizados por todos los usuarios de un equipo y los pueden ver todos los usuarios del equipo y de los servicios del sistema como, por ejemplo, servicios de Microsoft Windows. Un origen de datos de equipo es especialmente útil cuando se desea proporcionar seguridad adicional, dado que ayuda a garantizar que sólo los usuarios que han iniciado una sesión pueden ver un origen de datos de equipo y un usuario remoto no puede copiar dicho origen de datos a otro equipo. Orígenes de datos de archivos Los orígenes de datos de archivos (también denominados archivos DSN) almacenan información de conexión en un archivo de texto, no en el Registro de Windows, y, generalmente, se pueden utilizar con mayor flexibilidad que los orígenes de datos de equipos. Por ejemplo, se puede copiar un origen de datos de archivo a cualquier equipo con el controlador ODBC correcto para que su aplicación pueda basarse en información de conexión coherente y precisa para todos los equipos utilizados. También se puede colocar el origen de datos de archivo en un único servidor, compartirlo entre varios equipos en la red, y mantener fácilmente la información de conexión en una ubicación. También es posible que un origen de datos no se pueda compartir. Un origen de datos de archivo que no se puede compartir reside en un único equipo y apunta a un origen de datos de equipo. Es posible utilizar orígenes de datos de archivos que no se pueden compartir para obtener acceso a orígenes de datos de equipos existentes desde orígenes de datos de archivos. Cadenas de conexión Si es programador, puede definir una cadena de conexión con formato en su código de Microsoft Visual Basic que especifique la información de conexión. La utilización de una cadena de conexión evita la definición de un equipo o un archivo DSN y pasa la información de conexión directamente al Administrador de controladores ODBC. Esto es útil, por ejemplo, cuando se desea evitar que los administradores de sistemas o los usuarios tengan que crear primero un DSN, o para simplificar la instalación de su aplicación. Para mantener la seguridad de la información de cadena de conexión de su código, ayude a proteger el código creando un archivo MDE o mediante una contraseña. Nota de seguridad Utilice contraseñas fuertes que combinen letras en mayúsculas y minúsculas, números y símbolos. Las contraseñas débiles son aquellas que no mezclan dichos elementos. Un ejemplo de contraseña fuerte sería Y6dh!et5, y de débil, Casa27. Utilice una contraseña fuerte que pueda recordar para no tener que anotarla en ningún sitio.