java學習day18----JDBC操作基本操作

1.JDBC瞭解 JDBC(Java Data Base Connectivity,java數據庫連接)是一種用於執行SQL語句的Java API,可以爲多種關係數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基準,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序。 2.開發步驟 1.創建一個java項目 2.導入mysql的數據庫驅動jar包 驅動包 3.註冊驅動 Class.forName(“”) 4.獲取與數據庫的鏈接 5.得到代表發送和執行SQL語句的對象 Statement 6.執行語句 7.如果執行的是查詢語句,就會有結果集,處理 8.釋放佔用的資源 3.代碼

        // 註冊數據庫驅動
        DriverManager.deregisterDriver(new Driver());
        // 獲取數據庫連接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "root", "123456");
        // 獲取執行sql語句的statem0ent
        Statement st = conn.createStatement();
        String sql = "select * from user ";
        // 執行sql語句增刪改查
        //st.executeUpdate("insert into user values(12,'楊過','123456')");
        //st.executeUpdate("update user set namer='楊康' where id='12'");
        //st.executeUpdate("delete from user where id='12'");
        ResultSet set = st.executeQuery(sql);
        while (set.next()) {
            // 獲取指定位置的數據,角標從1 開始
            String com1 = set.getString(1);
            String com2 = set.getString(2);
            String com3 = set.getString(3);
            String com4 = set.getString(4);
            System.out.println(com2 + ":" + com3 + ":" + com4 + ":" + com1);
        }
        // 釋放數據庫資源
        set.close();
        st.close();
        conn.close();

4.PreparedStatement  PreparedStatement實現Statement  PreparedStatement需要預編譯以及需要參數  由於PreparedStatement有緩存區,所以效率更高  由於PreparedStatement有緩存區,所以更安全,防止了注入(1=1)  語句中的參數可以使用佔位符(?) ?

   // 準備sql預編譯語句
    // ?佔用一個參數位
    String sql = "INSERT INTO user (NAME,sex,age) VALUES (?,?,?);";
    // 3:執行sql預編譯語句(檢查語法)
    stsm=conn.prepareStatement(sql);
    // 4:設置傳遞的參數
     stsm.setString(1,"張三");
     stsm.setString(2,"男");
     stsm.setInt(3,20);
    // 5:發送參數,執行sql
    // 注意:這裏的方法後面沒有參數
    int result = stsm.executeUpdate();

5.封裝工具類的使用 1)db.properties

className=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/reba
name=root
password=12345

2)JdbcUtil.class

public  static   String DRIVER ;
    public  static   String URL ;
    public  static   String USERNAME ;
    public  static   String PASSWORD ;

    static{
        //讀取配置文件的方式 
        InputStream is = JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties");
        Properties p = new Properties();
        try {
            p.load(is);
            DRIVER = p.getProperty("driverClass");
            URL = p.getProperty("jdbcUrl");
            USERNAME = p.getProperty("username");
            PASSWORD = p.getProperty("password");

            Class.forName(DRIVER);//加載驅動
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 獲取數據庫連接
     * @return
     * @throws Exception
     */
    public static Connection getConnection() throws Exception{
        return DriverManager.getConnection(URL, USERNAME, PASSWORD);
    }

    /**
     * 關閉資源的方法
     * @param rs
     * @param st
     * @param con
     */
    public static void release(ResultSet rs ,Statement st,Connection con){
        //6.關閉資源  (有順序)
        if(rs!=null){
             try {
                rs.close();
                rs = null;  //垃圾回收器立即回收
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

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

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

    }

3)Test.class

Connection con = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            con = JdbcUtil.getConnection();
            st = con.createStatement();
            rs = st.executeQuery("");
            while(rs.next()){
                //封裝數據
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            JdbcUtil.release(null, st, con);
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章