Download JDBC (Java Database Connectivity) es un API para trabajar con

Document related concepts

Open Database Connectivity wikipedia , lookup

Data Source Name wikipedia , lookup

Adaptive Server Anywhere wikipedia , lookup

Apache HBase wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Transcript
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.