Una vez que se obtiene una conexión, podemos interactuar con la base de datos. Los métodos y propiedades definidas en la instrucción JDBC, las interfaces CallableStatement y Preparado de STATement permiten el envío de comandos SQL o PL/SQL y recepción de datos de la base de datos.
También definen métodos que ayudan a convertir las diferencias de datos entre Java y bases de datos utilizando tipos de datos SQL.
La siguiente tabla proporciona una descripción general de cómo se utiliza cada interfaz para comprender qué interfaz usar
Objeto de declaración:
Crear un objeto de declaración
Cuando puede usar el objeto de instrucción para ejecutar las declaraciones SQL, debe usar el método createStatement () del objeto de conexión para crear uno, como se muestra en el siguiente ejemplo:
Instrucción stmt = null; try {stmt = conn.createStatement (); . . .} Catch (Sqlexception e) {. . .} finalmente { . . .}Una vez que se crea un objeto de declaración, se puede usar para ejecutar declaraciones SQL con uno de sus tres métodos de ejecución.
Boolean Ejecute (String SQL): Devuelve el valor booleano Verdadero si se puede recuperar el objeto de resultSet, de lo contrario devuelve falso. Use este método para ejecutar declaraciones SQL DDL, o cuando se use SQL dinámico real.
int ejecuteUpdate (string sql): Devuelve el número de filas ejecutadas por la instrucción SQL afectada. Use este método para ejecutar y espere obtener algunas filas afectadas de declaraciones SQL; por ejemplo, insertar, actualizar o eliminar las declaraciones.
ResultSet ExecuteQuery (String SQL): devuelve el objeto ResultSet. Use este método cuando desee obtener un conjunto de resultados, al igual que usar una instrucción SELECT.
Cierre el objeto de declaración:
Al igual que cerrar un objeto de conexión para contener un recurso de la base de datos, el objeto de declaración debe cerrarse por la misma razón.
Una simple llamada al método Close () hará el trabajo. Si el objeto de conexión está cerrado primero, cerrará el objeto de instrucción también. Sin embargo, el objeto de la declaración siempre debe cerrarse explícitamente para garantizar un espacio libre adecuado.
Instrucción stmt = null; try {stmt = conn.createStatement (); . . .} Catch (Sqlexception e) {. . .} Finalmente {stmt.close ();}
Objeto preparado
La interfaz PrepareStatement extiende la interfaz de declaración, lo que permite agregar varias características avanzadas a un objeto de declaración común.
La declaración proporciona flexibilidad para los parámetros dinámicos.
Crea un objeto de estatemación preparada:
PreparpentStatement pstmt = null; try {string sql = "actualizar empleados establecer age =? Donde id =?"; pstmt = conn.preparestatement (sql); . . .} Catch (Sqlexception e) {. . .} finalmente { . . .}¿Todos los parámetros en JDBC están representados? Símbolo, que es un marcador de parámetros conocido. Antes de ejecutar la instrucción SQL, se debe proporcionar cada parámetro del valor.
El método setxxx () une el valor a un parámetro, donde xxx representa el tipo de datos Java que desea vincular al valor de parámetro de entrada. Si olvida proporcionar el valor, recibirá una SQLException.
Cada etiqueta de parámetro se hace referencia por su posición de número de secuencia. La primera marca indica la posición 1, la siguiente posición es 2, y así sucesivamente. Este método es diferente de la indexación de matriz Java, comenzando con 0.
Todos los métodos de objetos de declaración para interactuar con la base de datos (a) Ejecutar (), (b) ExecUteQuery () y (c) ExecuteUpdate () también funcionan con los objetos preparados. Sin embargo, el método se modifica para usar las declaraciones SQL, que pueden utilizar los parámetros de entrada.
Cierre el objeto preparado:
Al igual que cerrar un objeto de declaración, por la misma razón, el objeto preparado también debe cerrarse.
Una simple llamada al método Close () hará el trabajo. Si el objeto de conexión está cerrado, primero cerrará el objeto preparado. Sin embargo, el objeto Preparado de la Estado siempre debe cerrarse explícitamente para garantizar el espacio libre correcto.
PreparpentStatement pstmt = null; try {string sql = "actualizar empleados establecer age =? Donde id =?"; pstmt = conn.preparestatement (sql); . . .} Catch (Sqlexception e) {. . .} Finalmente {pstmt.close ();} Instancia de preparación
Aquí hay ejemplos de esta realización de uso de estaciones preparadas y actividades de activación:
Copie el siguiente ejemplo jdbcexample.java, compile y ejecute como se muestra a continuación:
// Paso 1. Importar PackagesImport requerido java.sql.*; Clase pública JDBCEXAMPLE {// JDBC Nombre del controlador y base de datos URL estática Cadena final JDBC_DRIVER = "com.mysql.jdbc.driver"; cadena final estática db_url = "jdbc: mysql: // localhost/emp"; // credenciales de base de datos static final cadena user = "UserName"; static final string pass = "contraseña"; public static void main (string [] args) {Connection conn = null; Preparado STMT = NULL; Pruebe {// Paso 2: Registre JDBC Driver Class.forname ("com.mysql.jdbc.driver"); // Paso 3: abra un sistema de conexión.out.println ("Conectarse a la base de datos ..."); conn = drivermanager.getConnection (db_url, usuario, pase); // Paso 4: ejecute una consulta System.out.println ("Crear declaración ..."); Cadena sql = "actualizar empleados establecidos age =? Donde id =?"; stmt = conn.preparestatement (sql); // enlace valores a los parámetros. stmt.setInt (1, 35); // Esto establecería Age stmt.setInt (2, 102); // Esto establecería ID // actualizamos la edad del registro con id = 102; int filas = stmt.executeupdate (); System.out.println ("filas impactadas:" + filas); // Seleccionemos todos los registros y mostrarlos. sql = "Seleccionar ID, primero, último, edad de los empleados"; ResultSet rs = stmt.executeQuery (sql); // Paso 5: Extraiga datos del conjunto de resultados while (rs.next ()) {// recuperar por columna nombre int id = rs.getInt ("id"); int age = rs.getInt ("edad"); Cadena primero = rs.getString ("primero"); Cadena last = rs.getString ("último"); // Muestra valores System.out.print ("Id:" + id); System.out.print (", edad:" + edad); System.out.print (", primero:" + primero); System.out.println (", último:" + Último); } // Paso 6: entorno de limpieza rs.close (); stmt.close (); conn.close (); } catch (sqlexception se) {// manejar errores para jdbc se.printstackTrace (); } catch (excepción e) {// manejar errores para class.forname E.PrintStackTrace (); } Finalmente {// Finalmente bloqueado para cerrar los recursos, intente {if (stmt! = null) stmt.close (); } catch (sqlexception se2) {} // nada que podamos hacer intentar {if (conn! = null) conn.close (); } catch (Sqlexception SE) {SE.PrintStackTrace (); } // fin finalmente intente} // finalizar prueba system.out.println ("¡Adiós!"); } // end main} // end jdbcexampleAhora compilemos el ejemplo anterior de la siguiente manera:
C:> javac jdbcexample.java
Cuando se ejecuta JDBCEXample, produce los siguientes resultados:
C:> java jdbcexample
Conectando a la base de datos ... Creación de declaraciones ... Filas impactadas: 1ID: 100, Edad: 18, Primero: Zara, último: Aliid: 101, Edad: 25, Primero: Mahnaz, último: Fatmaid: 102, Edad: 35, Primero: Zaid, Last: Khanid: 103, Edad: 30, Primero: Sumit, Last: Mittalgoodbye!