encapsulamento de jdbc (adição e exclusão)

DBHelper

pacote 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 {
// driver de carregamento geralmente carrega apenas uma vez
    estático {
        tente {
            // primeira etapa Carregar o driver
            //mysql5.0+ versão ("com.mysql.cj.jdbc.Driver") versão 8.0+ ("com.mysql.cj.jdbc.Driver")
            Class.forName ("oracle.jdbc.OracleDriver") ;
        } catch (ClassNotFoundException e) {
            // TODO bloco de captura gerado
            automaticamente e.printStackTrace ();
        }
    }
    
    public static Connection getConnection () {
        // O segundo passo é estabelecer uma conexão. Também a encapsulamos. Por que é principalmente muito tempo para gravar problemas
        Connection conn = null;
        try {
            // o mysql pode ser alterado para "jdbc: mysql: // localhost: 3306 / [nome do banco de dados]? 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 Bloco de captura gerado
            automaticamente e.printStackTrace ();
        }
        return conn;
    }
    // O terceiro passo é para nós a escrever a instrução SQL instrução SQL apenas um parâmetro declaração preparada objetos dentro dela e não a mesma declaração função SQL não é o mesmo
    // Então vamos acabar declaração sql-lo como um parâmetro para
    
    
    // CRUD Ambos são o mesmo método executeUpdate e o valor de retorno é o mesmo
    //, portanto, adicionamos,
    excluímos e mudamos juntos quando encapsulamos public int doUpdate (String sql, Object ... params) {
        // Primeiro obtém a conexão
        Connection conn = getConnection ();
        // Determine um valor de retorno
        int result = -1;
        tente {
            // Objeto
            PreparedStatement PreparedStatement pstmt = conn.prepareStatement (sql);
            // E os parâmetros, haverá espaços reservados?
            // Como não apenas a adição, exclusão e
            
            modificação de parâmetros de membros, também temos parâmetros para nossa consulta, também encapsulamos doParams (pstmt, params);
            // Executa a instrução SQL
            result = pstmt.executeUpdate ();
            closeAll (null, conn, pstmt);
        } catch (SQLException e) {
            // TODO bloco catch gerado
            automaticamente e.printStackTrace ();
        }
        
        return result;
        
    }
    public List <Map <String, String >> findAll (String sql, Object ... params) {
        List < Map <String, String >> list = new ArrayList <Map <String, String >> ();
        tente {
        // primeiro obtenha a conexão
        Connection conn = getConnection ();
        ResultSet resultset = null;
    
            // Objeto
            PreparedStatement PreparedStatement pstmt = conn.prepareStatement (sql);
            // E os parâmetros, haverá espaços reservados?
            // Como não apenas a adição, exclusão e
            
            modificação de parâmetros de membros, também temos parâmetros para nossa consulta, portanto também encapsulamos doParams (pstmt, params);
            resultset = pstmt.executeQuery ();
            
            // Como obter a chave do Map- "O campo desta instrução sql
            // Primeiro, devemos obter os metadados pelo conjunto de resultados
            ResultSetMetaData rsmd = resultset.getMetaData ();
            String [] columnNames = new String [rsmd .getColumnCount ()];
            for (int i = 0; i <columnNames.length; i ++) {
                // Observe que as chaves que chegamos aqui estão todas em maiúsculas, por isso, mudamos para o minúsculo
                columnNames [i] = rsmd.getColumnName ( i + 1) .toLowerCase ();
                
            }
            while (resultset.next ()) {
                Map <String, String> map = new HashMap <String, String> ();
                // De acordo com o nome da coluna ao qual o valor deve
                ser (String cn: columnNames) {
                    Valor da string = resultset.getString (cn);
                    map.put (cn, valor);
                }
                // lista.
                lista.add (mapa);
            }
            closeAll (conjunto de resultados, conn, pstmt);
            
        } catch (SQLException e) {
            // TODO Bloco de captura gerado
            automaticamente e.printStackTrace ();
        }
        lista de retorno;
        
        
    
        
    }
    private void closeAll (ResultSet rs, Connection connection, PreparedStatement pstmt) {
        // TODO stub de método gerado automaticamente:
        
            {
                if (rs! = null) {
                rs.close ();
                }
                if (conn! = null) {
                    conn.close ();
                }
                if (pstmt! = null) {
                    pstmt.close ();
                }
            } catch (SQLException e) {
                // TODO Bloco de captura gerado
                automaticamente e.printStackTrace ();
            }
        }
    private void doParams (PreparedStatement pstmt, Object ... params) {
        // Primeiro determine se o usuário não passou o parâmetro, então não precisamos injetar o parâmetro
        if (params! = null && params.length> 0) {
            // Injetamos apenas o parâmetro Object ... o parâmetro do quantificador , Essencialmente, uma matriz
            para (int i = 0; i <comprimento do parâmetro; i ++) {
                // tudo é um objeto
                try {
                    pstmt.setObject (i + 1, params [i]);
                } catch (SQLException e) {
                    // TODO Bloco de captura gerado
                    automaticamente e.printStackTrace ();
                }
            }
            
        }
        
        
    }
    
}

Test.java

pacote 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 Método stub gerado automaticamente
         // Teste o encapsulamento do jdbc
         // Como não somos um método estático, 
        instancie primeiro o DBHelper db = new DBHelper (); //         // grave a
 instrução SQL sem parâmetros
 //         String sql1 = "atualizar o ID do conjunto autoincre_demo = id + 1";
 //        int result1 = db.doUpdate (sql1);
 //         if (result1> 0) {
 //             System.out.println ("modificado com sucesso");
 //         } else {
 //             System.out.println ("modificado com falha" );
 //         }
 //         // Grava a instrução sql (com parâmetros)
 //         String sql = "update autoincre_demo set NAME =?";
 //         // Executa
 //         int result = db.doUpdate (sql, "Haikou" );
 //         if (result> 0) {
 //             System.out.println ("Modificado com sucesso");
 //         } else {
 //             System.out.println ("Falha na modificação");
//         }
        // 操作 操作 
      String sql2 = "selecione * de autoincre_demo" ; 
       Lista <Mapa <String, String >> list = db.findAll (sql2);
       for ( int i = 0; i <list.size (); i ++ ) { 
        System.out.println (list.get (i) .get ( "nome" ))); 
    } 

       
    } 

}

 

Acho que você gosta

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