1. 程式人生 > >Java通過JDBC連線資料庫的三種方式!!!並對資料庫實現增刪改查

Java通過JDBC連線資料庫的三種方式!!!並對資料庫實現增刪改查

前言
java連線資料庫完整流程為:
1,獲得驅動(driver),資料庫連線(url),使用者名稱(username),密碼(password)基本資訊的三種方式。
2,通過獲得的資訊完成JDBC實現連線資料庫。
注:連線前請匯入jar包,例:連線mysql資料庫需要匯入mysql-connector-java-5.1.39-bin.jar包

連線資料庫的三種方式

三種方式中二,三最為常用

一,直接獲取資料庫資訊,並jdbc驅動連線

這裡寫程式碼片  public static Connection connection() {
        //獲得連線資料庫連線
        Connection conn=null
; try { //初始化Driver類,註冊驅動 Class.forName("com.mysql.jdbc.Driver"); //連線資料庫 conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/web", "root", "root"); } catch (Exception e) { e.printStackTrace(); } return conn; }

二,獲得db.properties檔案中的配置資訊獲得

註解:
ResourceBundle 類的作用就是讀取資源屬性檔案(properties),根據.properties檔案的名稱資訊(本地化資訊),匹配當前系統的國別語言資訊(也可以程式指定),然後獲取相應的properties檔案的內容。

public class Jdbc_Conn2 {
      private static String driver;
      private static String url;
      private static String username;
      private
static String password; static { //通過ResourceBundle獲得db檔案中的資訊 ResourceBundle bundle = ResourceBundle.getBundle("db"); //通過key值獲得db檔案中的配置資訊 driver=bundle.getString(driver); url=bundle.getString(url); username=bundle.getString(username); password=bundle.getString(password); } public static Connection mysqlconn() { //連線資料庫 Connection conn=null; Class.forName(driver); conn= DriverManager.getConnection(url, username, password); return conn; }

三、通過IO流獲得db檔案中配置資訊

註解:
*首先,呼叫物件的getClass()方法是獲得物件當前的類型別,這部分資料存在方法區中,而後在類型別上呼叫getClassLoader()方法是得到當前型別的類載入器,在Java中所有的類都是通過載入器載入到虛擬機器中的,而且類載入器之間存在父子關係,就是子知道父,父不知道子,這樣不同的子載入的型別之間是無法訪問的(雖然它們都被放在方法區中),所以在這裡通過當前類的載入器來載入資源也就是保證是和類型別同一個載入器載入的。
最後呼叫了類載入器的getResourceAsStream()方法來載入檔案資源*

public class Jdbc_Conn3 {
    private static String dirver;
    private static String url;
    private static String username;
    private static String password;
    static {
    //IO流
        InputStream is=Jdbc_Conn3.class.getClassLoader().getResourceAsStream("db.properties");
        Properties props=new Properties();
        try {
            props.load(is);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        dirver=props.getProperty("driver");
        url=props.getProperty("url");
        username=props.getProperty("username");
        password=props.getProperty("password");
    }


    public static Connection mysqlconn() {
        //1,獲得連線資料庫的驅動
        Connection conn=null;
        Class.forName(dirver);
        conn= DriverManager.getConnection(url, username, password);
        return conn; 
    }

連資料庫後,使用完畢需要關閉連線

關閉資料庫需要關閉以下資源:1,Connection(連線).2,PreparedStatement(預編譯).3,Result(結果集)

    public static void mysqlcolse(Connection con,PreparedStatement pstem,ResultSet rs) {

            try {
                if(con!=null) {
                con.close();
                }
                if(pstem!=null)
                {
                    pstem.close();
                }
                if(rs!=null) {
                    rs.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }


    }

完成以上步驟便是一個連線資料庫的java模板了,以上連線方法與關閉方法存於一個java檔案中即可完成。

增、刪、改、查

前言


以下程式碼在完成連線資料庫的基礎之上完成,通過java實現對資料庫的增刪改查

一、查詢功能
注:
Connection中prepareStatement()方法,提供佔位符(?),佔位符設定引數setXXX(index,value)。優點:改動引數時,不需改動sql,通過佔位符修改。
ResultSet類,作為查詢條件的返回集的作用

    //先宣告物件,優點在於方便下方任意程式碼塊呼叫物件資訊。
    Connection con=null;
    PreparedStatement pstm=null;
    ResultSet rs=null;

    @Test
    public void testJv3()
    {
    //1,通過JDBC的模板連線上資料庫
    con=Jdbc_Conn3.mysqlcon();
    //2,編寫sql語句
    String sql="select * from user where uid=?";
    try {
    //3.預編譯需要執行的sql
        pstm = con.prepareStatement(sql);
        //prepareStatement中佔位符?,通過setXXX(index,values)來進行設定,index從1開始,
        pstm.setInt(1, 1);
        //執行sql並返回查詢結果
        ResultSet rs = pstm.executeQuery();
        if(rs.next())
        {
            String password=rs.getString(3);
            String uname=rs.getString(2);
            System.out.println(uname+":"+password);
        }else {
            System.out.println("沒有結果");
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally {
        Jdbc_Conn3.mysqlcolse(con, pstm, rs);
    }

    }

額外知識點:查詢條件輸出方式
if():當只有一條結果時,可用if
while():當有多條結果時,可用while

二、增,刪,改

增刪改,只需要改對應sql即可,以下程式碼為模板。

PreparedStatement pstm=null;
        Connection con=null;
        //1,例項化MyDataSource
        ComboPooledDataSource mdsc= new ComboPooledDataSource();
        //2.從MyDataSource的池中獲得連線物件
        try {
            con= mdsc.getConnection();
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        //3.寫sql
        String sql="insert into user values (null,?,?)";
        //4,預編譯
        try {
            pstm= con.prepareStatement(sql);
            pstm.setString(1, "zj");
            pstm.setString(2, "zj");
            int col=pstm.executeUpdate();
            if(col>0) {
                System.out.println("新增成功:"+col+"條數");
            }else {
                System.out.println("新增失敗");
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            JDBCUtils_V3.release(con, pstm, null);
        }
    }

————————————————————上文出自胖胖,轉載請附帶原文連結

後續更新自學的方法,以及java知識總結
我是哪怕前路坎坷,也不願負年輕的菜狗,自學之路,共勉