encapsulación de jdbc (adición y eliminación)

DBHelper

package com.nll.dao; 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DBHelper {
// controlador de carga generalmente solo carga una vez
    estático {
        intente {
            // primer paso Cargue el controlador
            //mysql5.0+ versión ("com.mysql.cj.jdbc.Driver") versión 8.0+ ("com.mysql.cj.jdbc.Driver")
            Class.forName ("oracle.jdbc.OracleDriver") ;
        } catch (ClassNotFoundException e) {
            // TODO Bloque de captura generado automáticamente
            e.printStackTrace ();
        }
    } Public
    
    static Connection getConnection () {
        // El segundo paso es establecer una conexión. También la encapsulamos. ¿Por qué es principalmente demasiado largo para escribir problemas?
        Connection conn = null;
        try {
            // mysql se puede cambiar a "jdbc: mysql: // localhost: 3306 / [nombre de la base de datos]? allowPublicKeyRetrieval = true & serverTimezone = UTC & useSSL = false & characterEncoding = UTF-8"
            conn = DriverManager.getConnection ("jdbc: oracle: thin: @ 127.0 .0.1: 1521: orcl "," scott "," scott ");
        } catch (SQLException e) {
            // TODO Bloque de captura generado automáticamente
            e.printStackTrace ();
        }
        return conn;
    }
    // El tercer paso es para que nosotros escribimos la instrucción SQL instrucción SQL sólo un parámetro declaración preparada objetos dentro de ella y no la misma sentencia de función SQL no es lo mismo
    // Así que terminamos instrucción SQL como parámetro a
    
    
    // CRUD Ambos son el mismo método executeUpdate y el valor de retorno es el mismo
    // por lo que agregamos, eliminamos y cambiamos juntos cuando encapsulamos
    public int doUpdate (String sql, Object ... params) {
        // Primero obtenga la conexión
        Connection conn = getConnection ();
        // Determine un valor de retorno
        int result = -1;
        intente {
            // objeto
            PreparedStatement PreparedStatement pstmt = conn.prepareStatement (sql);
            // ¿Qué pasa con los parámetros, habrá marcadores de posición?
            // Debido a que no solo
            
            agregamos , eliminamos y modificamos los parámetros de los miembros, también tenemos parámetros para nuestra consulta, por lo que también encapsulamos doParams (pstmt, params);
            // Ejecuta la instrucción SQL
            result = pstmt.executeUpdate ();
            closeAll (null, conn, pstmt);
        } catch (SQLException e) {
            // TODO Bloque de captura generado automáticamente
            e.printStackTrace ();
        }
        
        resultado de retorno;
        
    }
    lista pública <Map <String, String >> findAll (String sql, Object ... params) {
        List < Map <String, String >> list = new ArrayList <Map <String, String >> ();
        intente {
        // Primero obtenga la conexión
        Connection conn = getConnection ();
        ResultSet resultset = null;
    
            // Objeto
            PreparedStatement PreparedStatement pstmt = conn.prepareStatement (sql);
            // ¿Qué pasa con los parámetros, habrá marcadores de posición?
            // Porque no solo la adición, eliminación y
            
            modificación de parámetros de miembros, también tenemos parámetros para nuestra consulta, por lo que también encapsulamos doParams (pstmt, params);
            resultset = pstmt.executeQuery ();
            
            // Cómo obtener la clave de Map- "El campo de esta instrucción sql
            // Primero debemos obtener los metadatos a través del conjunto de resultados
            ResultSetMetaData rsmd = resultset.getMetaData ();
            String [] columnNames = new String [rsmd .getColumnCount ()];
            for (int i = 0; i <columnNames.length; i ++) {
                // Tenga en cuenta que las claves que obtenemos aquí están en mayúsculas, por lo que cambiamos a
                columnNames en minúsculas [i] = rsmd.getColumnName ( i + 1) .toLowerCase ();
                
            }
            while (resultset.next ()) {
                Map <String, String> map = new HashMap <String, String> ();
                // Según el nombre de la columna para tomar el valor
                de (String cn: columnNames) {
                    Valor de cadena = resultset.getString (cn);
                    map.put (cn, valor);
                }
                // 当 一条 取 完 放到 lista 里面 去
                lista.add (mapa);
            }
            closeAll (conjunto de resultados, conn, pstmt);
            
        } catch (SQLException e) {
            // TODO Bloque de captura generado automáticamente
            e.printStackTrace ();
        }
        lista de retorno;
        
        
    
        
    }
    private void closeAll (ResultSet rs, Connection conn, PreparedStatement pstmt) {
        // TODO Método de generación automática stub
        
            try {
                if (rs! = null) {
                rs.close ();
                }
                if (conn! = null) {
                    conn.close ();
                }
                if (pstmt! = null) {
                    pstmt.close ();
                }
            } catch (SQLException e) {
                // TODO Bloque de captura generado automáticamente
                e.printStackTrace ();
            }
        }
    doParams privado vacío (PreparedStatement pstmt, Object ... params) {
        // Primero determina si el usuario no ha pasado el parámetro, luego no necesitamos inyectar el parámetro
        if (params! = null && params.length> 0) {
            // Solo inyectamos el parámetro Object ... el parámetro cuantificador , Esencialmente una matriz
            para (int i = 0; i <params.length; i ++) {
                // todo es un objeto
                try {
                    pstmt.setObject (i + 1, params [i]);
                } catch (SQLException e) {
                    // TODO Bloque de captura generado automáticamente
                    e.printStackTrace ();
                }
            }
            
        }
        
        
    }
    
}

Test.java

paquete com.nll.dao; 

import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.List;
 import java.util.Map; 

public  class Test1 { 

    public  static  void main (String [] args) {
         // TODO 
        Código auxiliar de método generado automáticamente
         // Probar la encapsulación de jdbc
         // Debido a que no somos un método estático, primero cree una instancia de DBHelper db = new DBHelper ();
 //         // escriba una instrucción SQL sin parámetros
 //         String sql1 = "actualizar autoincre_demo set id = id + 1";
 //        int result1 = db.doUpdate (sql1);
 //         if (result1> 0) {
 //             System.out.println ("modificado con éxito");
 //         } else {
 //             System.out.println ("modificado falló" );
 //         }
 //         // Escribir sentencia sql (con parámetros)
 //         String sql = "actualizar autoincre_demo set NAME =?";
 //         // Ejecutar
 //         int result = db.doUpdate (sql, "Haikou" );
 //         if (resultado> 0) {
 //             System.out.println ("Modificado con éxito");
 //         } else {
 //             System.out.println ("Error en la modificación");
//         }
        // 查询 操作 
      String sql2 = "select * from autoincre_demo" ; 
       Lista <Mapa <Cadena, Cadena >> lista = db.findAll (sql2);
       for ( int i = 0; i <list.size (); i ++ ) { 
        System.out.println (list.get (i) .get ( "nombre" )); 
    } 

       
    } 

}

 

Supongo que te gusta

Origin www.cnblogs.com/ll-hb/p/12727651.html
Recomendado
Clasificación