Veamos el componente JDBC bueno, nos permite realizar conexión al aceto e implementar consultas y operaciones
desde nuestras aplicaciones en Java.
También son las siglas en inglés de ya va, tal vez conecté Vitti, pero bueno, veamoslo.
Me importante el concepto que detrás de JS lo primero es algo genérico, es una API.
Recuerden que un API es un conjunto de interfaces y clases abstracta, todo bastante genérico, pero
la implementación concreta la tiene que realizar cada motor de base dato en particular.
Por ejemplo, vamos a tener una secuela y vamos a tener Oracle, SQL Server de Microsoft, Podres,
SQL, en fin, motores de bÃsqueda que implementan Tapi y le proveen su propio cuerpo, su propia implementación
y al final nosotros vamos a trabajar con un motor en particular, por ejemplo, como SQL.
Por lo tanto tenemos que descargar el driver este conector que implementa esta API para poder realizar
consultas y operaciones.
También una característica importante.
Bueno, como todo en Java es independiente sistema operativo, por lo tanto lo podemos ejecutar en cualquier
sistema transparente también como API, JS es transparente a la base, dato a la cual vamos a acceder.
Hoy por hoy podríamos trabajar con SQL Server, pero el día mañana creo emigrar por ejemplo a se cuele
o podres.
La configuración es mínima, solamente tenemos que cambiar el driver, el conector, esta librería y
por supuesto el string de conexión ESIC.
En vez de conectándome se cuele a tal puerto, a tal servidor o IP o en el local host.
Lo hacemos con la forma de pobres, pero si igual siempre hay una sintaxis, algo que podría variar
entre un motor y otro.
Pero bueno, por lo general debería funcionar de forma transparente en cada motor.
Entonces ya una vez que tenemos el driver en nuestra aplicación, ya podemos comunicarnos, conectarnos
y por supuesto trabajar, realizar consultas, realizar un insert, un APDAYC, un delito, en fin,
implementar un CRUD para administrar nuestras tablas.
Bien, continuemos.
Veamos un diagrama, un esquema gráfico detuvimos que había mencionado acá tenemos yaba nuestra aplicación
propia y tenemos la API JS completamente genérico.
Son interface, clases abstracta y cada motor en particular implementan esta API, por lo tanto van
a crear su clase implementaciones concreta para la conexión para el objeto connection para la interfaces
también que realizan consultas y ejecutan operaciones clase auto la interfaz statement y prepend statement.
Después vamos a ver y también para poder obtener el resultado de la consulta mediante la interfaz result
set que por detrás maneja un cursor y podemos navegar a través del resultado invocando el método Next.
También lo vamos a ver bien.
Veamos cuáles son las principales interfaces de clase genérica de Tapi.
Bueno, tenemos el driver que he implementado por cada proveedor.
Bueno, en realidad estas clases se implementan por cada proveedor, pero el driver nos permite conectarnos,
comunicarnos con las EATO y por eso estamos trabajando.
Comencé cueles requiere su propio driver.
Si estamos trabajando con Oracle, también su propio driver.
Y así por cada motor.
Luego tenemos el Driver Manager, que es una clase con métodos estáticos, por ejemplo el método Get
Connection y lo que hace el Driver Manager, tal como dice su nombre administrar diferentes driver.
De hecho, nuestra aplicación podría manejar varios driver a distintas facetas y manejar distintas conexiones.
No podríamos comunicar con MA SQL, pero también podremos trabajar sobre podres al mismo tiempo y de
eso se encarga el Travian Manager.
Entonces, por ejemplo, con el método Get Connections le pasamos el string de conexión.
También se le conoce como Wireless y el usuario y la clave es si las credenciales de la base dato y
listo y nos podemos comunicar.
Entonces este método de golpe un objeto del tipo Connection que contiene la conexión y a partir de este
objeto connection ya podemos realizar consultas y operaciones con el objeto hasta Steinmetz.
Ya lo vamos a ver, pero también tenemos la clase datas ves metadata que no entrega todo tipo de información
acerca de la base datos.
Todo lo que es el esquema, la estructura, los nombres de tablas, los campos que contiene Catalufla,
en fin, los tipos de datos.
Continuemos con el TMT.
El statement es un objeto bien importante que nos permite realizar consultas y operaciones.
Si quiero realizar por ejemplo una consulta SELECT, invocamos el método Execute Query, pero si quiero
realizar una consulta de modificación, por ejemplo un ataque, un insert, un delight, invocamos el
método Execute Adapt, pero también tenemos una especialización del statement que se llama prepar Stedman.
La diferencia es que los valores de las consultas por ejemplo del select en el WHERE cuando quiero colocar
una condición con el WHERE, ahí podemos colocar parámetros.
Cuando el nombre o el Yussef o Leydi sea igual a un valor, ese valor se pasa como un parámetro.
Lo mismo en el insert, en el APDAYC.
Todos los valores que queremos actualizar en el APDAYC o queremos insertar en el INSERT lo van a pasar
como parámetros y eso es bastante robusto porque nos permite.
Reutilizar la consulta se cuela como una plantilla y la pueden ejecutar varias veces solamente modificando
los parámetros.
Luego tenemos el Clavell statement que nos permite ejecutar procedimiento almacenado con parámetros
de entradas y salidas.
Luego tenemos el result set, que es la respuesta final.
Cuando ejecutamos mediante el objeto sentencia o statement, ejecutamos un query, lo enviamos al motor,
devuelve el resultado la lista, por ejemplo, de registros encontrados o que coinciden con esa consulta.
Bueno, el result set contiene y maneja esta lista por debajo, trabaja con un cursor y vamos moviendo
este cursor con el método Next.
Entonces lo podríamos, por ejemplo, iterar con un while y con el next nos posicionamos en el primer
registro encontrado.
Ahí podemos trabajar con esos datos y así nos vamos moviendo con el cursor.
Luego tenemos el result set metadata muy parecido el data metadata, pero relacionado al resultado ese.
Cuáles son los números de columnas o nombres de columnas?
En fin, de la consulta para comunicarnos a la base.
Dato establecer una conexión utilizamos el Draven manager y el que con lechon llega.
Tenemos que pasar tres parámetro importante primero el string de conexión VL.
Ahí tenemos el ejemplo más secuela como SQL sería JDBC 2 punto me secuela de 2 punto double large lippe
o localhost o el nombre de la máquina 2 punto el puerto 33 03 y el nombre lo acepto.
Luego pasamos las credenciales.
El Yussef einem el Password McQuade Root es el usuario por defecto como administrador y alguna clave.
Listo.
Ahí tenemos la conexión.
Entonces, a partir de tu objeto connection ya podemos ejecutar consultas sentencia del tipo SELECT,
por ejemplo, invocando el método Create Statement.
Luego ejecutamos una query execute query con este objeto por argumento pasamos la consulta select asterisco
from la tabla.
Obtenemos el conjunto de resultado el rasul set que lo podemos iterar con un while moviendo el cursor.
Recuerden que el result set punto next no posicionamos sobre el primer registro encontrado.
Sí que existe alguno porque puede que no he encontrado nada, pero si existe, bueno, entra en el while
invocando método get y el nombre de la columna.
Obtenemos el dato del cursor en cuestión y si se fijan acá cada metodo get tiene un tipo dato get int,
get string, get double.
Bueno, eso depende del tipo de dato de la columna del campo.
Por ejemplo, el Heidy es un identificador auto incremental, es un número.
Invocamos el int get it y el nombre campo.
Luego tenemos el nombre producto donde nombre ese día el nombre del campo y del tipo String.
Es un texto.
Luego tenemos el precio.
Nombre campo precio del tipo double se fijan y así obtenemos cada valor del campo en el cursor actual
que corresponde al registro en cuestión.
Luego tenemos que cerrar los recursos.
Resultado punto clouds.
Y así también la sentencia y el objeto de conexión.
Bien.
Otra forma en vez de utilizar nombre de columna, por ejemplo Leidy nombre precio la fecha utilizamos
índices que mantiene el mismo orden en el cual están los campos en la tabla.
Por ejemplo, el número 1 corresponde a la columna y el número 2 corresponde a la columna nombre.
El número 3 corresponde a la columna precio y así la 4 fecha.
Cada campo, cada columna tiene un índice en la tabla según el orden en el cual se establecen.
Sería otra forma.
Podemos utilizar el índice de la columna o el nombre y para realizar operaciones CML.
Recuerden para ejecutar un insert, un Abbe que modifican un registro en Segato o lo agregan o lo eliminan.
Muy parecido a lo anterior.
Pero en vez de ejecutar el execute query, invocamos el método el sicut Apdayc y este método devuelve
un entero con la cantidad de filas afectada, por ejemplo con el Lilit.
Si se eliminó una fila o dos fila o si se actualizaron con el ante tanta fila.
En fin, entonces siempre devuelve la cantidad de filas afectadas.
Bien y como argumento del método colocamos la sentencia.
Por ejemplo.
In Cerinto productos.
Bueno, ya lo vimos para crear 1 registro el apte.
Lo mismo con el set y los campos que vamos a modificar y luego el huer para una condición.
Solamente modificar el producto 7 o con Heidy 7.
Lo mismo para eliminar.
Acá estamos pasando parámetros.
Se fija en where Heidy y a 5.
Ahora claro, si estamos trabajando en Java esto serían variables de nuestra aplicación y acá tendríamos
que concatenar el valor.
59. La variable que contiene el string monthan pic la variable que contiene el entero 7 el Heidy se
fijan.
Tendríamos que concatenar, pero una solución mucho mejor y mucho más práctica.
Utilizar sentencias preparada serían plantillas de una sentencia pero con parámetro, plantilla con
parámetro y luego modificamos esos parámetro con sus valores.
Qué es lo que viene justamente a continuación?
Veamos un ejemplo acá tenemos la consulta SELECT.
La diferencia que en vez de llamar.
El método Créete Steinmetz, acá invocamos Pepper Stedman y por argumento le pasamos la consulta, pero
como plantilla, con los parámetros y el tipo de dato del statement del objeto que se crea no es statement
como antes, sino es preparar statement del tipo sentencie, prepará.
Acá en el Heidy colocamos igual.
Si no pregunta cómo tenemos uno solo corresponde al índice 1.
Cada parámetro tiene un índice según se posicionen.
Esto si no pregunta en la consulta, pero acá tenemos uno solo, entonces asignamos el valor al parámetro
para Leydi con el método SET.
Acá tenemos el objeto sentencia punto set el tipo dato.
Recuerden que Leydi es del tipo entero, el índice 1 porque tenemos un solo parámetro en la plantilla
o en la consulta y le pasamos el valor 4.
Entonces, como segundo argumento, el valor como primer argumento el índice y luego ejecutamos la consulta
execute query.
Si volvemos atrás en un Steinmetz que no es preparada, acá invocamos el método Cred Steinbeck y en
el Execute Query o en el Execute hace pasamos la sentencia.
Acá no. Acá la sentencia va a tiro.
En el PREPARÉIS te meto en Lasseter.
Está preparada.
Y luego pasamos a los valores y al final ejecutamos.
De hecho, podríamos ejecutar varias veces.
Y vamos cambiando los valores y podemos reutilizar la misma sentencia, la misma plantilla, solamente
modificando con los métodos set los valores de los parámetros.
Acá tenemos el ejemplo completo que obtenemos el result set en el este query y con un if mostramos la
información claro, un if porque acá tenemos un where.
Entonces va a devolver un solo registro.
En vez de utilizar un while, podemos utilizar un if cuando se trata de un solo resultado que va a devolver.
Entonces if si tiene un siguiente elemento en el cursor punto Next mueve el cursor y si lo encuentra
bueno, se posiciona y mostramos el valor para Leidy.
El valor para el nombre por precio para la fecha.
Con los métodos GET y con el tipo de dato correspondiente, el Heidy del tipo entero en nombre del tipo
String, el precio del tipo double y la fecha del tipo date, pero del tipo void de Java se cuele no
della batel.
Después vamos a ver, luego cerramos los recurso importante.
Veamos un ejemplo con el insert.
Acá tenemos lo mismo.
PREPEND Steinmetz, un insert muy parecido al select, pero acá sería un insert con parámetros.
Acá tiene tres parámetros.
El primero el nombre segundo precio fecha el nombre 1 precio 2 fecha 3 va en orden el índice.
Entonces se modifica con el método set.
Según el índice se fijan 1 nombre bicicleta.
El segundo argumento si el valor que se lo pasamos al parámetro 1 el precio también.
Pero esto lo pasamos al parámetro 2 y la fecha se lo pasamos al parámetro 3 y cada uno con su tipo.
Dato particular el nombre del tipo es.
El precio del tipo double.
El fecha del tipo dato llega.
Tenemos un yaba SQL dato importante 9 lleba útil y pasamos el tiempo actual en milisegundos con la clase
System y el método Carret en Time milisegundos.
Finalmente ejecutamos con el éxico out added.
Si retrocedemos y vemos acá se ejecuta la consulta select con exit out query.
Pero todo lo que es insert attack y Delight con él exec out added.
Y también tenemos otros ejemplo para latte con productos set precio nombre Leidy.
Y también acá tenemos tres parámetros y lo pasamos acá van en orden set Dogbert con su valor para el
precio 99.99.
Luego tenemos set string con el índice 2 para el nombre del tipo String monthan Vic.
Luego tenemos set int el Heidy parámetro 3 con valor 7 execute ad date para ejecutar lo mismo para el
delito.
Bueno, y eso es sentencia preparada una mucho mejor forma para realizar otra consulta con parámetros
en vez de esta concatenado es mucho mejor pasar parámetro más eficiente y además es mucho más seguro
porque evita la inyección SQL.
Probé por debajo una capa seguridad que evita que no inyecten cualquier tipo de valor, cualquier tipo
de dato.
De hecho, por eso acá invocamos al set double.
Acá no nos pueden inyectar cualquier tipo de objeto, cualquier tipo de dato.
Lo mismo con el string tiene que ser un objeto, el tipo string y por ejemplo, acá no nos pueden inyectar
código que puedan afectar o puedan vulnerar a nuestra aplicación, no?
Acá hay una capa seguridad extra que evita la inyección SQL, lo hace mucho más seguro.
Además una plantilla se cuele reutilizable bien y esto sería la parte introductoria.
Nos vemos en la siguiente clase.