Red de conocimiento de abogados - Derecho de sociedades - Comprenda completamente el proceso de ejecución de JDBC

Comprenda completamente el proceso de ejecución de JDBC

Hace unos días, el autor publicó un blog y escribió mybatis a mano para comprender completamente los principios del marco. Para ayudar a los principiantes a comprender mejor el marco mybatis, esta vez explicaré el proceso de ejecución de JDBC de Java.

La función de JDBC

El nombre completo de JDBC es Java DataBase Connection, que es una conexión de base de datos Java. Podemos usarlo para operar bases de datos relacionales. La interfaz JDBC y las clases relacionadas se encuentran en los paquetes java.sql y javax.sql. Podemos usarlo para conectarnos a la base de datos, ejecutar consultas SQL, procedimientos almacenados y procesar los resultados devueltos.

La interfaz JDBC permite un acoplamiento flexible entre los programas Java y los controladores JDBC, lo que facilita el cambio entre diferentes bases de datos.

Pasos de conexión JDBC

Realizar una conexión JDBC en seis pasos:

1. Importar el paquete

en el programa Contiene clases JDBC Requerido para la programación de bases de datos. En la mayoría de los casos, es suficiente usar import java.sql.*

2. Registre el controlador JDBC

Es necesario inicializar el controlador para que se pueda abrir la comunicación con la base de datos. .

3. Abra una conexión

Utilice el método DriverManager.getConnection() para crear un objeto Connection, que representa una conexión física a la base de datos.

4. Ejecute una consulta

Debe utilizar un objeto de tipo Declaración o Declaración Preparada (consulte la diferencia entre los dos a continuación) y enviar una declaración SQL a la base de datos para su ejecución. la consulta.

5. Extraiga datos del conjunto de resultados

Este paso demuestra cómo obtener datos de resultados de consultas de la base de datos. Utilice el método ResultSet.getXXX() para recuperar resultados de datos

6. Limpiar los recursos del entorno

Después de usar JDBC para interactuar con los datos de la base de datos, debe cerrar explícitamente todos los recursos de la base de datos para reducir el desperdicio de recursos. Este artículo utiliza el método de prueba con recursos para cerrar recursos. Este es el azúcar sintáctico de JDK7 que los lectores pueden buscar por sí mismos.

El código completo es el siguiente.

Mejores prácticas de JDBC

¿Cómo logra JDBC un acoplamiento flexible entre los programas Java y los controladores JDBC?

La API JDBC utiliza el mecanismo de reflexión de Java para lograr un acoplamiento flexible entre los programas Java y los controladores JDBC. Si observa el ejemplo de JDBC anterior, encontrará que todas las operaciones se completan a través de la interfaz JDBC y que el controlador solo aparece cuando se carga a través del mecanismo de reflexión Class.forName.

Esta es una de las mejores prácticas del mecanismo de reflexión en la biblioteca central de Java. Aísla aplicaciones y controladores, facilitando el trabajo de migración de bases de datos.

La diferencia entre Declaración y PreparedStatement

Precompilación

Diferencia durante la creación:

Diferencia durante la ejecución:

Como se puede ver en lo anterior, PreparedStatement tiene un proceso de precompilación y se ha vinculado a SQL, no importa cuántas veces se ejecute, no se compilará nuevamente. Sin embargo, la declaración es diferente si se ejecuta varias veces. , se compilará en consecuencia sql, por lo que desde este punto de vista, PreparedStatement es más eficiente que Statement. PreparedStatement está precompilado, por lo que puede prevenir eficazmente la inyección de SQL y otros problemas.

Marcador de posición

PrepareStatement puede reemplazar variables. Las declaraciones SQL pueden contener ?, que se pueden reemplazar con variables.

La declaración sólo se puede concatenar con cadenas.

ResultSet de JDBC

Después de consultar la base de datos, se devolverá un ResultSet, que es como una tabla de datos del conjunto de resultados de la consulta.

El objeto ResultSet mantiene un cursor apuntando a la fila de datos actual. Al principio, el cursor apunta a la primera fila. Si se llama al método next() de ResultSet, el cursor se moverá hacia abajo una fila. Si no hay más datos, el método next() devolverá falso. Puede usarlo en un bucle for para iterar sobre un conjunto de datos.

El ResultSet predeterminado no se puede actualizar y el cursor solo puede moverse hacia abajo. En otras palabras, solo puede atravesar desde la primera línea hasta la última línea. Sin embargo, también puede crear un ResultSet que se puede revertir o actualizar, como se muestra a continuación.

Cuando el objeto Statement que generó el ResultSet debe cerrarse o volverse a ejecutar o se obtiene el siguiente ResultSet, el objeto ResultSet también se cerrará automáticamente.

Puede obtener datos de la columna pasando el nombre de la columna o un número de serie comenzando desde 1 a través del método getter de ResultSet.

Diferentes tipos de ResultSet

Dependiendo de los parámetros de entrada al crear un Statement, corresponderán diferentes tipos de ResultSet. Si observa los métodos de conexión, encontrará que los métodos createStatement y prepareStatement están sobrecargados para admitir diferentes ResultSets y tipos de concurrencia.

Hay tres tipos de objetos ResultSet.

ResultSet tiene dos tipos de concurrencia.