Java-JDBC detallado

 
Java-JDBC detallado
 

Bibliotecas de clases y interfaces de uso común de JDBC

1.DriverManager: clase de servicio que impulsa el controlador JDBC

2.Conexión: objeto de conexión de base de datos

3. Declaración: el objeto para ejecutar sql

4. PreparedStatement: el objeto que ejecuta sql

5. ResultSet: objeto de conjunto de resultados, encapsular los resultados de la consulta

Pasos para utilizar JDBC

Ejercicio de inicio de sesión

Herramientas JDBC

Código de acceso

 La creación no es fácil, si este blog es útil para ti, recuerda dejar un mensaje + me gusta.  


JDBC es una interfaz importante para que los programas Java se conecten a las bases de datos. Es un puente importante para crear programas y bases de datos Java. Describe una biblioteca estándar para acceder a bases de datos relacionales y proporciona una estructura de sistema estándar para los proveedores de bases de datos. JDBC permite a los usuarios acceder a cualquier forma de datos de tabla, el proceso de ejecución: 1. Conectarse a la fuente de datos 2. Pasar instrucciones de consulta y actualización a la base de datos 3. Procesar la respuesta de la base de datos y devolver el resultado.

Si no está familiarizado con las sentencias SQL de uso común, ¡salte aquí primero! ! La declaración SQL más utilizada en la historia

Bibliotecas de clases y interfaces de uso común de JDBC

 

1.DriverManager: clase de servicio que impulsa el controlador JDBC

La función principal es registrar el controlador y obtener el objeto Conexión

 1. Registre el controlador: indique al programa qué jar de controlador de base de datos debe usar

//注册与给定的驱动程序 DriverManager
static void registerDriver(Driver driver) ;


//写代码使用 
Class.forName("com.mysql.jdbc.Driver");        

2. Obtenga conexión a la base de datos:

方法: Conexión estática getConnection (URL de cadena, usuario de cadena, contraseña de cadena) 

parámetro:

          url: especifica la ruta de la conexión

          usuario: nombre de usuario

          contraseña: contraseña 

          Sintaxis: jdbc: mysql: // dirección IP (nombre de dominio): número de puerto / nombre de la base de datos, usuario, contraseña

          Detalles: si se está conectando al servidor mysql nativo y el puerto predeterminado del servicio mysql es 3306, la URL se puede abreviar como: jdbc: mysql: /// nombre de la base de datos      

//获取数据库连接对象Connection
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/db3","root","root");

2.Conexión: objeto de conexión de base de datos

Cada conexión representa una sesión de conexión física Para acceder a la base de datos, primero debe obtener una conexión a la base de datos.

Métodos comunes:

       1.  Obtenga el objeto para ejecutar sql

              Declaración createStatement ()

              PreparedStatement prepareStatement (String sql)  

       2.  Asuntos de gestión:

             Iniciar transacción: setAutoCommit (boolean autoCommit): llame a este método para establecer el parámetro en falso, es decir, inicie la transacción

             Confirmar la transacción: commit () 

             Revertir la transacción: rollback () 

3. Declaración: el objeto para ejecutar sql

Statemet es una interfaz de herramientas para ejecutar sentencias SQL. El objeto puede ejecutar sentencias DDL, DCL o DML. Al ejecutar consultas SQL, devolverá el conjunto de resultados de la consulta.

Método principal

                1.  ejecución booleana (String sql): este método puede ejecutar cualquier instrucción SQL. Sólo entender  

                2.  int executeUpdate (String sql): ejecuta declaraciones DML (insertar, actualizar, eliminar), declaraciones DDL (crear, modificar, eliminar)

                       Valor de retorno: el número de filas afectadas, que se puede utilizar para determinar si la declaración DML se ejecuta correctamente

                       Si el valor de retorno es> 0, la ejecución es exitosa, de lo contrario, falla.

                3.  ResultSet executeQuery (String sql): ejecutar la instrucción DQL (select)

                       Este método solo se puede utilizar para ejecutar declaraciones de consulta y devolver el objeto ResultSet correspondiente al resultado de la consulta. 

 

4. PreparedStatement: el objeto que ejecuta sql

PreparedStatement es un objeto Statement precompilado. PreparedStatement es una subinterfaz de Statement. Permite que la base de datos precompile sentencias SQL. En el futuro, solo necesitará cambiar los parámetros del comando SQL para evitar que la base de datos compile sentencias SQL cada tiempo, por lo que el rendimiento es mejor. SQL precompilado resuelve el problema de la inyección de SQL SQL precompilado: Use? Como marcador de posición para los parámetros.

Método común

        boolean execute (): ejecuta la instrucción SQL en este objeto PreparedStatement, la instrucción puede ser cualquier tipo de instrucción SQL.

        int executeUpdate (): objeto PreparedStatement para realizar esta declaración SQL, debe ser una declaración de lenguaje de manipulación de datos (DML) SQL, como INSERT, UPDATEDELETE; o no devuelve ninguna declaración SQL, por ejemplo, declaraciones DDL.

       ResultSet executeQuery (): ejecuta la consulta SQL en este objeto PreparedStatement y devuelve ResultSetel objeto generado por la consulta.

Dado que PreparedStatement es una subinterfaz de Statement, sus métodos comunes son muy coherentes. PreparedStatement es principalmente SQL precompilado, que resuelve el problema de la inyección de SQL y mejora el rendimiento.

5. ResultSet: objeto de conjunto de resultados, encapsular los resultados de la consulta

ResultSet es un objeto de resultado, que contiene métodos de resultados de consulta. ResultSet puede obtener los datos en la columna a través de índice o clase de nombre de columna.

Método común

            boolean next (): Mueva el cursor hacia abajo una línea para determinar si la línea actual es el final de la última línea (si hay datos), si es así, devuelve falso, si no, devuelve verdadero

            void beforeFirst (): Posiciona el puntero de registro del ResultSet en la posición inicial antes de la primera fila.

            booleano absoluto (int fila): Mueva el puntero de registro del conjunto de resultados a la fila de la fila.

            getXxx (parámetro): obtener datos

                 Xxx: representa el tipo de datos como: int getInt (), String getString ()

                 parámetro:

                    1.  int: representa el número de la columna, comenzando desde 1 como: getString (1)

                    2.  Cadena: representa el nombre de la columna. Por ejemplo: getDouble ("balance")

Pasos para utilizar JDBC

Pasos para compilar SQL estáticamente: declaración de uso

 

 

1.  Importe el paquete jar del controlador mysql-connector-java-5.1.37-bin.jar

         1. Copie mysql-connector-java-5.1.37-bin.jar en el directorio libs del proyecto

         2. Haga clic derecho -> Agregar como biblioteca

  2.  Registre el conductor

  3.  Obtenga el objeto de conexión de la base de datos Connection

  4.  Defina sql

  5.  Obtenga la instrucción del objeto que ejecuta la instrucción sql

  6.  Ejecute sql y acepte el resultado devuelto.

  7.  Procesamiento de resultados

  8.  Liberar recursos

Compile dinámicamente los pasos de SQL: use el objeto PreparedStatement

 

 1.  Importe el paquete jar del controlador mysql-connector-java-5.1.37-bin.jar

 2.  Registre el conductor

 3.  Obtenga el objeto de conexión de la base de datos Connection

 4.  Defina sql

          * Nota: ¿Cuál es el uso de los parámetros sql? Como marcador de posición. Tales como: seleccione * del usuario donde nombre de usuario =? Y contraseña =?;

  5.  Obtenga PreparedStatement Connection.prepareStatement (String sql) 

  6.  ¿Dar? Asignación:

          * Método: setXxx (parámetro 1, parámetro 2)

                  * Parámetro 1 :? El número de posición comienza desde 1

                  * Parámetro 2 :? Valor de

  7.  Ejecute sql y acepte el resultado devuelto sin pasar la instrucción sql

  8.  Procesamiento de resultados

  9.  Liberar recursos

public static void main(String[]args)throwsException{
	//1.导入驱动jar包
	//2.注册驱动
	Class.forName("com.mysql.jdbc.Driver");
	//3.获取数据库连接对象Connection
	Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/db3","root","root");
	//4.定义SQL
	Stringsql="update emp set salary=8001 WHERE id=1001;";
	//5.执行SQL语句对象Statement
	Statementstmt=conn.createStatement();
	//6.执行SQL,接收返回结果
	intcount=stmt.executeUpdate(sql);
	//7.处理结果
	System.out.println(count);
	//8.释放资源
	stmt.close();
	conn.close();
}

Ejercicio de inicio de sesión

Herramientas JDBC

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

/**
 * JDBC工具类
 */
public class JDBCUtils {
    private static String url;
    private static String user;
    private static String password;
    private static String driver;
    /**
     * 文件的读取,只需要读取一次即可拿到这些值。使用静态代码块
     */
    static{
        //读取资源文件,获取值。

        try {
            //1. 创建Properties集合类。
            Properties pro = new Properties();

            //获取src路径下的文件的方式--->ClassLoader 类加载器
            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
            URL res  = classLoader.getResource("jdbc.properties");
            String path = res.getPath();
          
            //2. 加载文件
            pro.load(new FileReader(path));

            //3. 获取数据,赋值
            url = pro.getProperty("url");
            user = pro.getProperty("user");
            password = pro.getProperty("password");
            driver = pro.getProperty("driver");
            //4. 注册驱动
            Class.forName(driver);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }


    /**
     * 获取连接
     * @return 连接对象
     */
    public static Connection getConnection() throws SQLException {

        return DriverManager.getConnection(url, user, password);
    }

    /**
     * 释放资源
     * @param stmt
     * @param conn
     */
    public static void close(Statement stmt,Connection conn){
        if( stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if( conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }


    /**
     * 释放资源
     * @param stmt
     * @param conn
     */
    public static void close(ResultSet rs,Statement stmt, Connection conn){
        if( rs != null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if( stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if( conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

Código de acceso

public class DemoLogin {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入账号:");
        String userName = sc.nextLine();
        System.out.println("请输入密码:");
        String password = sc.nextLine();
        boolean flag = new DemoLogin().login2(userName, password);
        if (flag) {
            System.out.println("登录成功!");
        } else {
            System.out.println("账号或密码错误!");
        }

    }

    public boolean login(String name, String password) {
        //账号密码正确性校验
        if (name == null || password == null) {
            return false;
        }
        Connection conn = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            conn = JDBCUtils.getConn();
            statement = conn.createStatement();
            String sql = "SELECT*FROM login WHERE username='" + name + "'andpassword='" + password + "';";
            System.out.println(sql);
            resultSet = statement.executeQuery(sql);
            return resultSet.next();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBCUtils.close(conn, statement, resultSet);
        }
        return false;
    }


    //使用PreparedStatement传参
    public boolean login2(String name, String password) {
        //账号密码正确性校验
        if (name == null || password == null) {
            return false;
        }

        Connection conn = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        try {
            conn = JDBCUtils.getConn();
            String sql = "SELECT*FROM login WHERE username=? and password=?;";
            //预编译SQL
            statement = conn.prepareStatement(sql);
            System.out.println(sql);
            //给参数赋值
            statement.setString(1, name);
            statement.setString(2, password);
            //执行查询
            resultSet = statement.executeQuery();
            return resultSet.next();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBCUtils.close(conn, statement, resultSet);
        }
        return false;

    }
}

Grandes beneficios : si cree que el código anterior es problemático, pase al siguiente blog " Java-Spring JDBC ". Descubrirá que siempre que pueda escribir sentencias SQL, el resto del marco lo hará por usted.

La creación no es fácil, si este blog es útil para ti, recuerda dejar un mensaje + me gusta.  

Supongo que te gusta

Origin blog.csdn.net/promsing/article/details/112792723
Recomendado
Clasificación