java與數據庫oracle連接學習之jdbc(4)做一個工具類,減少代碼複雜度

工具類

package com.librarySystem;

import java.sql.*;

/**
 * JDBC的工具類:
 * 加載驅動:只需要加載一次
 * 建立連接:
 * 釋放資源:
 */

public class JDBCUTILS {
    private static final String DRIVER = "oracle.jdbc.OracleDriver";
    // 主機地址 連接本機 localhost  或者127.0.0.1
    // 端口號 Oracle 數據庫默認端口號 1521
    // 實例名 安裝全的是orcl,沒有安裝全的是XE
    private static String URL = "jdbc:oracle:thin:@localhost:1521:orcl";   // jdbc:oracle:thin: @主機地址 :  端口號 : 實例名
    private static String USER = "cc";
    private static String PASSWORD = "ccpassword";
    static {//因爲驅動只需要加載一次,所以在靜態語句中進行
        try {
            Class.forName(DRIVER);
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    /**
     *建立與數據庫的連接
     * @return 連接好的連接
     */
    public static Connection getConnection(){
        try {
            Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
           return  connection;
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return null;
    }

    /**
     * 釋放資源
     * @param resultSet 結果集
     * @param statement 語句對象
     * @param connection 連接
     */
    public static void close(ResultSet resultSet, Statement statement ,Connection connection){//查詢時
        try
        {
            if (resultSet != null && !resultSet.isClosed())
                resultSet.close();
        }
        catch(SQLException ex)
        {
            ex.printStackTrace();
        }
        finally
        {
            try
            {
                if (statement != null && !statement.isClosed())
                    statement.close();
            }
            catch (SQLException ex)
            {
                ex.printStackTrace();
            }
            finally
            {
                try
                {
                    if (connection != null && !connection.isClosed())
                        connection.close();
                }
                catch(SQLException ex)
                {
                    ex.printStackTrace();;
                }
            }
        }
    }

    /**
     * 釋放資源
     * @param statement 語句對象
     * @param connection 連接
     */
    public static void close(Statement statement ,Connection connection){//增刪改
        close(null,statement,connection);
    }
}

主類

//學習鏈接: https://www.bilibili.com/video/BV14E411Q7wJ?p=2
package com.librarySystem;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

class Reader{
    public String rno;
    public String rname;
    public String rsex;
    public int rage;
    public String rboss;
    public String raddress;
    public String toString(){
        return rno+" "+rname+" "+rsex+" "+rage+" "+rboss+" "+raddress;
    }
}

public class ConnnectDatabase {
    /**
     * 查詢數據庫中資源對象
     * @return 對象集合
     */
    public static List<Reader>  queryALL(){
        Connection conn=null;
        PreparedStatement preparedStatement=null;
        ResultSet resultSet = null;
        List<Reader>readers = new ArrayList<>();
        try{
            conn = JDBCUTILS.getConnection();
            String sql ="SELECT * FROM Reader";
            preparedStatement = conn.prepareStatement(sql);
            resultSet  = preparedStatement.executeQuery();
            while(resultSet.next()){
                Reader reader= new Reader();
                reader.rno = resultSet.getString("RNO");
                reader.rname = resultSet.getString("RNAME");
                reader.rsex = resultSet.getString("RSEX");
                reader.rage = resultSet.getInt("RAGE");
                reader.rboss = resultSet.getString("RBOSS");
                reader.raddress = resultSet.getString("RADDRESS");
                readers.add(reader);
            }
        }
        catch (Exception e){
            e.printStackTrace();;
        }
        finally {
            JDBCUTILS.close(resultSet,preparedStatement,conn);
        }
        return readers;
    }

    public static void add() {
        Connection conn=null;
        PreparedStatement preparedStatement=null;
        try{
            conn = JDBCUTILS.getConnection();
            //防止插入注入,使用佔位符?
            String sql = "Insert into reader values('R011',?,?,?,?,?)";
            preparedStatement =conn.prepareStatement(sql);
            //根據位置以及類型設置佔位符
            preparedStatement.setString(1,"王尼瑪");
            preparedStatement.setString(2,"男");
            preparedStatement.setDouble(3,22);
            preparedStatement.setString(4,"李四");
            preparedStatement.setString(5,"404");
            preparedStatement.executeUpdate();
        }
        catch(Exception e){
            e.printStackTrace();
        }
        finally{
            JDBCUTILS.close(preparedStatement,conn);
        }
    }

    public static void del() {
        Connection conn=null;
        PreparedStatement preparedStatement=null;
        try{
            conn = JDBCUTILS.getConnection();
            //防止插入注入,使用佔位符?
            String sql = "Delete from reader where reader.rname like?";
            preparedStatement =conn.prepareStatement(sql);
            preparedStatement.setString(1,"_尼瑪");
            preparedStatement.executeUpdate();
        }catch(Exception e){
            e.printStackTrace();
        }
        finally{
           JDBCUTILS.close(preparedStatement,conn);
        }
    }

    public static void changeValue()  {
        Connection conn=null;
        PreparedStatement preparedStatement=null;
        try{
            conn = JDBCUTILS.getConnection();
            //防止插入注入,使用佔位符?
            String sql = "Update  reader  set rname='吳尼瑪' where reader.rname=?";
            preparedStatement =conn.prepareStatement(sql);
            preparedStatement.setString(1,"王尼瑪");
            preparedStatement.executeUpdate();
        }catch(Exception e){
            e.printStackTrace();
        }finally{
          JDBCUTILS.close(preparedStatement,conn);
        }
    }

    public static Reader querySpecial(String rno) {
        Connection conn=null;
        PreparedStatement preparedStatement=null;
        ResultSet resultSet = null;
        Reader reader=null;
        try{
            conn = JDBCUTILS.getConnection();
            String sql ="SELECT * FROM Reader where reader.rno=?";
            preparedStatement = conn.prepareStatement(sql);
            preparedStatement.setString(1,rno);
            resultSet  = preparedStatement.executeQuery();
            if(resultSet.next()){
                reader= new Reader();
                reader.rno = resultSet.getString("RNO");
                reader.rname = resultSet.getString("RNAME");
                reader.rsex = resultSet.getString("RSEX");
                reader.rage = resultSet.getInt("RAGE");
                reader.rboss = resultSet.getString("RBOSS");
                reader.raddress = resultSet.getString("RADDRESS");
            }
        }
        catch (Exception e){
            e.printStackTrace();;
        }
        finally {
            JDBCUTILS.close(resultSet,preparedStatement,conn);
        }
        return reader;
    }

    public static void main(String args[]) {

    }
}



/*
遍歷列表
List<Reader> lst = queryALL();
        Iterator<Reader>it = lst.iterator();
        String tmp =null;
        while(it.hasNext()){
            tmp = ((Reader)it.next()).rname;
            System.out.println(tmp);
        }

 queryALL().forEach(str->
                {System.out.println(str);});
 */
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章