1. Notas básicas de JDBC

1. Descripción general de JDBC

1.1 El concepto de JDBC

  • JDBC: un conjunto de especificaciones definidas por Java Database Connectivity Sun para simplificar y unificar la base de datos de conexión Java.
  • La relación entre JDBC y el controlador de base de datos: similar a la interfaz y la clase de implementación de interfaz, a través del controlador, la aplicación Java puede comunicarse con la base de datos.

1.2 ¿Por qué usar JDBC?

  1. Sin JDBC de la siguiente manera
    Inserte la descripción de la imagen aquí
  2. Tiene JDBC
    Inserte la descripción de la imagen aquí

2. El primer programa jdbc

2.1 Base de datos

create table user(
	id int primary key auto_increment,
	username varchar(20),
	password varchar(20),
	nickname varchar(20)
);

INSERT INTO `USER` VALUES(null,'zhangsan','123','张三');
INSERT INTO `USER` VALUES(null,'lisi','1234','李四');
INSERT INTO `USER` VALUES(null,'wangwu','12345','王五');

2.2 implementación de código

package com.freedom.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;

public class JdbcDemo {

	@Test
	public void testQuery() throws ClassNotFoundException, SQLException {
		// 1. 注册驱动驱动
		// 加载字节码文件,获取的字节码对象, 将字节码文件加载到jvm中
		Class.forName("com.mysql.jdbc.Driver");

		// 2.建立连接
		String url = "jdbc:mysql://localhost:3306/javaweb";
		String user = "root";
		String password = "258369";
		Connection connection = DriverManager.getConnection(url, user, password);

		// 3.获取一个执行SQL的对象
		Statement statement = connection.createStatement();

		// 4.执行sql
		String sql = "select * from user";
		ResultSet rs = statement.executeQuery(sql);

		// 5.获取结果处理结果
		while (rs.next()) {
			System.out.println(rs.getObject(1));
			System.out.println(rs.getObject(2));
			System.out.println(rs.getObject(3));
			System.out.println(rs.getObject(4));
			System.out.println("===");
		}

		// 6.关闭资源
		rs.close();
		statement.close();
		connection.close();
	}

}

3. API JDBC detallada

Inserte la descripción de la imagen aquí

3.1 java.sql.Drivermanager

Función: se utiliza principalmente para cargar el controlador y crear una conexión a la base de datos

  • java.sql.DriverManager.registerDriver (nuevo controlador ()), de esta manera dos veces nuevo controlador ();
  • Class.forName ("com.mysql.jdbc.Driver"); recomienda esta forma de escritura
  • getConnection (URL de cadena, usuario de cadena, contraseña de cadena); establecer una conexión con la base de datos

3.2 interfaz java.sql.Connection

La implementación de la interfaz está en el controlador de la base de datos. Todas las interacciones con la base de datos se basan en objetos de conexión.

  • createStatement (); Crear y ejecutar objeto de instrucción sql
  • prepareStatement (String sql); Crear un objeto que precompila y ejecuta sentencias sql

3.3 interfaz java.sql.Statement

La implementación de la interfaz en el controlador de la base de datos, el enunciado SQL operativo y la devolución del objeto de resultado correspondiente

  • ResultSet executeQuery (String sql) devuelve el conjunto de resultados de acuerdo con la instrucción de consulta. Solo se pueden ejecutar sentencias select.
  • int executeUpdate (String sql) devuelve el número de filas afectadas en función de la instrucción DML ejecutada (insertar actualización eliminar).
  • boolean execute (String sql) Este método puede ejecutar cualquier instrucción sql. Devuelve un valor booleano, que indica si es un conjunto de resultados ResultSet. Solo cuando se ejecuta la instrucción select y hay un resultado de retorno, devuelve verdadero, otras declaraciones devuelven falso.

3.4 interfaz java.sql.ResultSet

Encapsula el conjunto de resultados, consulta el objeto de la tabla de resultados

  • Proporcione un cursor, el cursor predeterminado apunta a la primera fila del conjunto de resultados.
  • Llame a next () una vez para mover el cursor una línea hacia abajo.
  • Proporcione algunos métodos getXXX. XXX representa el tipo de datos

API común de la interfaz ResultSet

  • boolean next (); Mueve el cursor una línea hacia abajo desde la posición actual.
  • XXX getXXX (int columnIndex): Obtenga el valor del tipo XXX de acuerdo con el número de serie de la columna, el número de serie de la columna comienza desde 1.
  • XXX getXXX (String columnName): obtenga el valor de tipo XXX según el nombre de la columna.
  • void close () cierra el objeto ResultSet.

4. Solución de problemas de inyección SQL: prepareStatement

package com.freedom.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.junit.Test;

public class JdbcDemo {
	@Test
	public void testQuery() throws ClassNotFoundException, SQLException {
		// 1. 注册驱动驱动
		// 加载字节码文件,获取的字节码对象, 将字节码文件加载到jvm中
		Class.forName("com.mysql.jdbc.Driver");

		// 2.建立连接
		String url = "jdbc:mysql://localhost:3306/javaweb";
		String user = "root";
		String password = "258369";
		Connection connection = DriverManager.getConnection(url, user, password);

		// 3.预编译sql
		String sql = "select * from user where username=? and password=?";
		PreparedStatement prepareStatement = connection.prepareStatement(sql);
		String username = "zhangsan";
		String password1 = "123";
		prepareStatement.setString(1, username);
		prepareStatement.setString(2, password1);
		
		// 4.执行
		ResultSet rs = prepareStatement.executeQuery();
		
		// 5.获取结果处理结果
		while (rs.next()) {
			System.out.println(rs.getObject(1));
			System.out.println(rs.getObject(2));
			System.out.println(rs.getObject(3));
			System.out.println(rs.getObject(4));
			System.out.println("===");
		}

		// 6.关闭资源
		rs.close();
		prepareStatement.close();
		connection.close();
	}
}

97 artículos originales publicados · elogiados 3 · 10,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/qq_39530821/article/details/103039113
Recomendado
Clasificación