JavaEE系列之(三)JDBC操做MySQL數據庫

1、JDBC簡介java

       JDBC(Java Data Base Connectivity)java數據庫鏈接
       SUN公司爲了簡化、統一對數據庫的操做,定義了一套Java操做數據庫的規範,稱之爲JDBC。這套接口由數據庫廠商去實現,這樣,開發人員只須要學習JDBC接口,並經過JDBC加載具體的驅動,就能夠操做數據庫。
       能夠爲多種數據庫提供統一的訪問,如Oracle,Mysql,SQL Server
       體現了java「一次編譯,處處運行」的思想
       MVC結構: View ,Control, Model, DB
 
2、代碼步驟
        須要的包:java.sql.*,    
                 javax.sql.*
                 以及相應的數據庫驅動的支持
         一、加載數據庫驅動:
           SUN公司只是定義了JDBC的一些接口,若是想要操做數據庫,須要先把數據庫的驅動,也就是JDBC的實現類拿到程序裏來,這個操做稱之爲註冊驅動,使用DriverManager類
           DriverManager.registerDriver(new com.mysql.jdbc.Driver());
         二、建立數據庫鏈接:
           JDBC提供了三種鏈接方式:一個參數,兩個參數、三個參數
           方式一:
                DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?username=root&password=aaa");
           方式二:
                 Properties p = new Properties();
                 p.setProperty("username", "root");
                 p.setProperty("password", "aaa");
                 DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", p);
           方式三:  
                 DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "aaa");
        三、建立用於向數據庫發送sql的Statement對象
                 Statement st = connection.createStatement();
                 String sql = "select * from table users;";

                 ResultSet rs = st.executeQuery(sql);mysql

        四、從表明結果集的 ResultSet 中取出數據,進行操做
                 while(rs.next()){
                     rs.getString(columnIndex);
                 }
        五、釋放資源
                在finally中釋放資源
3、JDBC使用詳解
          一、DriverManager類經常使用API:
            DriverManager.registerDriver(new Driver());
            DriverManager.getConnection(url,user,password);
            url的寫法:
                    jdbc:mysql:[]//localhost:3306/test?參數名=參數值
            經常使用數據庫URL地址的寫法:
                    Oracle寫法:jdbc:oracle:thin:@localhost:1521:sid
                    SqlServer—jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sid
                    MySql—jdbc:mysql://localhost:3306/sid
                    Mysql的url地址的簡寫形式: jdbc:mysql:///sid
                    若是你的主機地址默認是localhost  端口是3306
           二、Connection類經常使用API:
             Connection是數據庫編程中最重要的一個對象,客戶端與數據庫全部交互都是經過該對象完成的。
             createStatement(): 建立向數據庫放鬆sql的statement對象
             prepareStatment(sql):建立向數據庫發送預編譯sql的PrepareStatement對象
             setAutoCommit(boolean autoCommit):設置事務是否自動提交。
             commit() :在連接上提交事務。
             rollback() :在此連接上回滾事務。
           三、Statement類經常使用API
             Jdbc程序中的Statement對象用於向數據庫發送SQL語句。
             executeQuery(String sql) :用於向數據發送查詢語句。
             executeUpdate(String sql):用於向數據庫發送insert、update或delete語句
             execute(String sql):用於向數據庫發送任意sql語句
           四、ResultSet類經常使用API:
             Jdbc程序中的ResultSet用於表明Sql語句的執行結果。Resultset封裝執行結果時,採用的相似於表格的方式。ResultSet 對象維護了一個指向表格數據行的遊標,初始的時候,遊標在第一行以前,調用ResultSet.next() 方法,可使遊標指向具體的數據行,進行調用方法獲取該行的數據。
             獲取任意類型的數據:(列號從 1 開始)
                 getObject(int index)
                 getObject(string columnName)
             獲取指定類型的數據,(封裝數據時方便)例如:
                 getString(int index)
                 getString(String columnName)
             ResultSet還提供了對結果集進行滾動的方法:
                  next():移動到下一行
                  Previous():移動到前一行
                  absolute(int row):移動到指定行
                  beforeFirst():移動resultSet的最前面。
                  afterLast() :移動到resultSet的最後面。
             
           五、釋放資源:
             Jdbc程序運行完後,切記要釋放程序在運行過程當中,建立的那些與數據庫進行交互的對象,這些對象一般是ResultSet, Statement和Connection對象。
             特別是Connection對象,它是很是稀有的資源,用完後必須立刻釋放,若是Connection不能及時、正確的關閉,極易致使系統宕機。
              Connection的使用原則是儘可能晚建立,儘可能早的釋放。
             爲確保資源釋放代碼能運行,資源釋放代碼也必定要放在finally語句中。
           六、使用JDBC對數據庫進行CRUD:
             Statement.executeQuery方法用於向數據庫發送查詢語句,executeQuery方法返回表明查詢結果的ResultSet對象。
             Statement對象的executeUpdate方法,用於向數據庫發送增、刪、改的sql語句,executeUpdate執行完後,將會返回一個整數(即增刪改語句致使了數據庫幾行數據發生了變化)。          
複製代碼
 
  
複製代碼

          七、PreparedSatement類詳解sql

            PreperedStatement是Statement的孩子,它的實例對象能夠經過調用Connection.preparedStatement()方法得到,相對於Statement對象而言:
            Statement會使數據庫頻繁編譯SQL,可能形成數據庫緩衝區溢出。     
            PreparedStatement 可對SQL進行預編譯,從而提升數據庫的執行效率。
            而且PreperedStatement對於sql中的參數,容許使用佔位符的形式進行替換,簡化sql語句的編寫。          
複製代碼
 
  
複製代碼

           八、使用JDBC處理大文本和大二進制數據數據庫

              在實際開發中,程序通常不須要把大文本或二進制數據保存到數據庫。
              mysql存儲大文本採用的是Text,Text和blob分別又分爲:
                     TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT
                     TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB          
  1. 複製代碼
     
        
    複製代碼
    複製代碼
     
        
    複製代碼

              九、使用JDBC進行批處理編程

              業務場景:當須要向數據庫發送一批SQL語句執行時,應避免向數據庫一條條的發送執行,而應採用JDBC的批處理機制,以提高執行效率。要注意內存溢出問題。      
複製代碼
 
  
複製代碼

               優勢:發送的是預編譯後的SQL語句,執行效率高。oracle

               缺點:只能應用在SQL語句相同,但參數不一樣的批處理中。所以此種形式的批處理常常用於在同一個表中批量插入數據,或批量更新表的數據
            十、使用JDBC調用存儲過程:            
 

 

 
             



相關文章
相關標籤/搜索