Consultas a un BD con JDBC

Na maioría das aplicacións que imos atopar, unha base de datos aparecerá como fonte de información.JDBC permitiranos acceder a bases de datos (BD) de Java. ConjdBC Non é necesario escribir diferentes programas para diferentes BD, senón que un único programa serve para acceder a BD de distintivo. Incluso, podemos acceder a máis dun BD de distincións (Oracle, Access, MySQL, etc.) na mesma aplicación. Podemos pensar en JDBC como a ponte entre unha base de datos e o noso programa Java. Un exemplo sinxelo pode ser unha applet que a información mostrada contida nunha base de datos. A miniaplicación usará JDBC para obter estes datos.

O esquema que se seguirá nun programa que usa JDBC é o seguinte: Esquema de conexión xeral cunha base de datos

Un programa Java que usa JDBC primeiro debes establecer unha conexión co SGBD. Para facer unha conexión, usaremos un controlador específico para cada SGBD como establecemos. Unha vez establecida a conexión e podemos Notnter o BD con ningún comando SQL (seleccionar, actualizar, crear, etc.). O resultado dun comando selecto é un obxecto de resultado de Laclase, que contén os datos que devolven a consulta. Temos métodos de próstata para manexar mulleres devoltas. Tamén podemos realizar calquera medio en SQL (creación de táboas, dedición de xestión, etc.). Conexión a través da API e un controlador JDBC

para realizar estes Operacións Deberemos ter un SGBD (sistema de xestor de bases de datos), así como unha unidade de conducta para poder acceder a este SGBD. Imos usar SGBD: MySQL (dispoñible para Windows e Linux, Librredistribution) e Postgres (só para Linux, distribución gratuíta).

Controladores de acceso

Controladores para poder acceder Cada SGBD non forma parte da Ladistribución de Java polo que debemos obtelos porsed. Por que facer uso dun condutor?. O problema de Elprincipal que se pode considerar é que cada SGBD ten a súa propia API (a maioría dos propietarios), polo que un aumento do SGBD implica unha modificación do noso código. Sicolocammos Unha capa intermedia, podemos conectividade abstracta, a partir de TALFORM que usamos un obxecto para a conexión e Eldriver é responsable de traducir a chamada á API. O condutor simpatizará ás propias empresas que fabrican o SGBD.

Tipos de controladores

Existe unha norma establecida que divide os controladores de catro mans:

  • Tipo 1: JDBC-ODBC Bridge. ODBC (Open Battabase Conectividade) creouse para proporcionar unha conexión ás bases de datos en Microsoft Windows. ODBC permite o acceso a bases de datos de diferentes linguaxes de programación, como C e COBOL. A ponte de JDBC-ODBC permítelle vincular a Java con calquera base de datos dispoñible en ODBC. O uso deste tipo de condutor non se aconsella cando temos que acceder a bases de datos de alto rendemento, xa que as funcionalidades están limitadas a aquelas que a marca ODBC. Cada cliente debe ter instalado o controlador. J2SE inclúe este controlador na súa versión de Windows e Solaris. Configurar un controlador de tipo 1
  • Tipo 2: parte Java, partido nativo de condutor. É unha combinación de implementación de Java e API nativa para o acceso á base de datos. Este tipo de condutor é máis rápido que o anterior, porque o paso non está realizado pola capa ODBC. As chamadas de JDBC son traducidas a chamadas específicas da API da base de datos. Cada cliente debe ter instalado o controlador. Ten menos rendemento que os seguintes e non se pode empregar en internet, xa que precisa da API localmente. Configurar un controlador de tipo 2 tipo 2
  • Tipo 3: Acceso a base de datos Servidor intermedio. Este tipo de condutor de controlacións dunha abstracción da conexión. O Senescuto do cliente ao SGBD por un compoñente de servidor intermedio, que actúa como non porteiro para varios servidores. A vantaxe deste tipo Dedriver é o nivel de abstracción. O servidor de aplicacións weblogic incorpora este tipo de condutor. Configurar un controlador de tipo 3
  • Tipo 4: Drivers Java. Este é o máis directo. Llallamada JDBC é traducida a unha chamada de rede á base de datos, Synintermediaties. Proporcionar igual rendemento. A maioría da SGBD proporciona controladores de tipo mollado.

Instalación de controladores

A distribución de JDBC incorpora a Controladores para a ponte de JDBC-ODBC que nos permite acceder a calquera BD que se xestiona con ODBC. Para MySQL, debemos descargar e instalar o SGBD e o controlador, que se pode obter na dirección http://dev.mysql.com/doc/mysql/en/Java_Connector.html.O controlador postgre obtense en http://jdbc.postgresql.org

Para instalar o controlador, o único que debemos facer para cancelar o ficheiro JAR que o contén no classpath. Por exemplo, para MySQL:

export CLASSPATH=$CLASSPATH: /directorio-donde-este/mysql-connector-java-3.0.15-ga-bin.jar

co controlador instalado, podemos cargalo desde a nosa aplicación simplemente cargando dinámicamente a clase ao controlador:

Class.forName("com.mysql.jdbc.Driver");

O controlador JDBC-ODBC está cargado como se mostra a continuación:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

e de forma similar para postgres :

Class.forName("org.postgresql.Driver");

A carga do controlador debe ser sempre antes de deconar co BD.

Como vimos anteriormente, pode haber diferentes tipos de dereitos para a mesma base de datos. Por exemplo, un BD en MySQLpow para acceder por ODBC ou a través do seu propio piloto. Poderiamos pensar que a solución máis sinxela para usar ODBC para todas as conexións a SGBD. Non obstante, dependendo da complexidade da aplicación adsarrol isto podería darnos problemas. Determinada operacións SGBDPermite (transaccións, mellora de rendemento, forza, etc.) que se reducen facendo a súa conexión a través do controlador ODBC. É por iso que é preferible usar Dedriver específico para o SGBD en cuestión.

O exemplo máis lixeiro de problemas no uso de condutores está coas miniaplicacións. Cando usamos o acceso ás bases de datos VIAJDBC desde unha miniaplicación, debemos ter en conta que a Appletse executa na máquina cliente, polo que se o BD está aloxado no noso servidor, terá que establecer unha conexión remota. Aquí atopamos o problema de Quesi que a miniaplicación é visible desde Internet, é moi posible que o elpurto no que escoite o servidor de bases de datos pode ser cortado por algún firewall, polo que o acceso desde o exterior non sería posible.

O uso da ponte JDBC-ODBC tampouco se recomenda nas applets, xa que require que cada cliente teña a fonte de datos adecuada configurada na súa máquina. Isto pode controlalo no casón unha intranet, pero no caso de Internet será mellor usar outros métodos para a conexión.

Respecto ás excepcións, debemos capturar a excepción SQLEXceptionNeen case todas as operacións No que se ve involucrado, o obxecto JDBC.

Conectarse ao BD

Unha vez que o controlador axeitado está cargado para o noso SGBD, debemos establecer a conexión co BD. Para iso, imos usar o seguinte método:

Connection con = DriverManager.getConnection(url);Connection con = DriverManager.getConnection(url, login, password);

A conexión ao BD está encapsulada nun obxecto de conexión. Para a súa creación debemos proporcionar a URL BDY, Se o BD está protexido por contrasinal, o contrasinal de rexistro para acceder a ela. O formato do URLvarary segundo o condutor que usamos. Non obstante, todas as URL terán a seguinte forma xeral: JDBC: subprotocol >: < Nome >, con subprotocol que indica o tipo de SGBD e con nome nomeado do BD e proporcionando información adicional para a conexión.

Para conectarse a unha fonte de ODBC de BD NAME, por exemplo, usaremos a seguinte URL:

Connection con = DriverManager.getConnection("jdbc:odbc:bd");

no caso de MySQL, se queremos conectarse a un BD chamado BDALO na máquina local (localhost) e co contrasinal de usuario de usuario M ++ 24, imos do seguinte xeito:

Connection con = DriverManager.getConnection("jdbc:mysql://localhost/bd", "miguel", "m++24");

No caso de postgres (teña en conta que indicamos un porto de desconexión, o 5432):

Podemos depurar a conexión e determinar o que chamou JDBC. Para iso faremos uso dun par de demétodos que incorpora drivermanager. Logo indicoulle que as operacións que realizan JDBC ha semosera será indicado pola saída estándar:

DriverManager.setLogWriter(new PrintWriter(System.out, true));

Unha vez que esta chamada tamén pode ser amosado usando :

DriverManager.println("Esto es un mensaje");

Deixa unha resposta

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *