JDBC: conectividad de base de datos java java se conecta a la base de datos.
Sun Company define las reglas (interfaces) que operan todas las bases de datos relacionales .
Usando el código java unificado, puede operar todas las bases de datos relacionales.
Cada proveedor de base de datos implementa la interfaz y proporciona el paquete jar del controlador de la base de datos.El código real ejecutado es la clase de implementación en el paquete jar del controlador.
paso:
1. Importe el paquete jar del controlador
Directorio de compilación -> paquete de memoria -> agregar como biblioteca
2. Registre el controlador (no puede escribir)
3. Obtenga el objeto de conexión Conexión de la base de datos
4. Definir sql
5. Obtenga la declaración del objeto que ejecuta la declaración sql
6. Ejecute sql, ejecute el resultado devuelto
7. Procesamiento de resultados
8. Liberar recursos
DriveManager: objeto de gestión de unidades
Características:
Registre el controlador (dígale al programa qué paquete jar del controlador de la base de datos se debe usar)
static void registerDriver (Driver driver): registra el controlador dado DriveManager
写法:Class.forName("com.mysql.jdbc.Driver");
Principio: al ver el código fuente, se encuentra que hay un bloque de código estático en com.mysql.jdbc.Driver, y se llama al método registerDriver de DriveManager
(Después de mysql 5, no es necesario registrar el controlador, el controlador se registra automáticamente, se recomienda escribirlo)
obtener conexión de base de datos
Conexión estática getConnection (URL de cadena, usuario de cadena, contraseña de cadena)
url: especifica la ruta de la conexión
Sintaxis: jdbc:mysql://dirección IP:número de puerto/nombre de la base de datos
Si la conexión es al servidor mysql local y el puerto predeterminado del servicio mysql es 3306. La URL se puede abreviar como:
jdbc:mysql:///nombre de la base de datos
Conexión: objeto de conexión de base de datos
Obtenga el objeto que ejecuta sql:
Declaración crear Declaración()
PrepareStatement prepareStatement(String sql)
Administrar asuntos:
*Transacción abierta
setAutoCommit(boolean autoCommit): llame a este método para establecer el parámetro en falso, es decir, para abrir la transacción
* Confirmar transacción
comprometerse()
* transacción de reversión
Retroceder()
Declaración: se utiliza para ejecutar declaraciones sql estáticas
Ejecutar sql:
int executeUpdate(String sql): Ejecutar sentencias DML (insertar, actualizar, eliminar), sentencias DDL (crear, eliminar)
Valor devuelto: el número de filas afectadas
El éxito de la instrucción DML se puede juzgar por el número de filas afectadas (>0)
ResultaSet executeQuery(String sql): ejecutar sentencia DQL(select)
ResultSet: el objeto del conjunto de resultados, que encapsula los resultados de la consulta.
El cursor comienza en la posición del encabezado.
boolean next (): el cursor se mueve hacia abajo una fila para determinar si hay datos
getXxx(): Obtener datos. Xxx representa el tipo de datos
getInt,getString,obtener....
parámetro:
Pase un int que represente el número de columna (a partir de 1)
Pase una cadena que represente el nombre de la columna getString("sexo")
Recorrido de conjunto de resultados:
Clase de herramienta JDBC: JDBCUtils (escritura simplificada)
public class JDBCUtils { private static String url; private static String user; private static String password; //配置文件只读取一次,静态代码块 static{ //读取资源文件,获取值 Properties properties=new Properties(); //加载文件 try { properties.load(new FileReader("src/jdbc.properties")); url=properties.getProperty("url"); user=properties.getProperty("user"); password=properties.getProperty("password"); } catch (IOException e) { e.printStackTrace(); } } //获取连接 public static Connection getConnection() { try { return DriverManager.getConnection(url,user,password); } catch (SQLException e) { e.printStackTrace(); } return null; } //释放资源 public static void close(Statement st,Connection ct){ if(st!=null){ try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } if(ct!=null){ try { ct.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close(ResultSet rs,Statement st,Connection ct){ if(rs!=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } close(st,ct); } }
PreparedStatement: ejecutar objeto sql
Problema de inyección de SQL:
Al empalmar sql, hay algunas palabras clave de sql especiales involucradas en el empalme de cadenas, lo que causará problemas de seguridad.
Solución: Use PreparedStatement para representar objetos y ejecutar sentencias sql precompiladas (¿usar parámetros? como marcadores de posición)
¿Al definir el parámetro sql a usar? como marcador de posición
select *from user where username = ? and password = ?
Obtenga el objeto que ejecuta la instrucción sql
PrepareStatement pre=Connection.prepareStatement(String sql);
Asignar un valor a ?:
setXxx(参数1,参数2) //参数1:?位置 //参数2:?值
Ejecutar sql: no es necesario pasar sql
Nota: La declaración preparada se utilizará para adiciones, eliminaciones y cambios en la etapa posterior.