JDBC 的三個W

代碼重構DBUtils工具類
  1)連接管理起來(static方法)
  2)資源關閉

how:
1.註冊驅動 三種方式(a. DriverManager.registerDriver(new com.mysql.jdbc.Driver())
           b. Class.ForName("com.mysql.jdbc.Driver") 常用這一種
           c. java -Djdbc.drivers=com.mysql.jdbc.Driver.FirstJDBC)
   三種方式的區別
          Class.ForName("..");是通過字節碼文件 .class (在硬盤)在JVM上創建類對象
          DriverManager.registerDriver(new com.mysql.jdbc.Driver())的對象是 new 出來的
2.獲取數據庫連接
   Connection conn = DriverManager.getConnection(url, username, password);
3.創建Statement對象
   Statement stmt = conn.createStatement();
   預編譯語句  PreparedStatement pstmt = conn.createPreparedStatement(); 優點 提高效率?sql語句可以重複利用?結構相同 可以批量地處理數據,使用 ?作佔位符,在執行sql語句之前必須輸入參數
       pstmt.setString(1,"..");
       .....
       pstmt.executeUpdate();
       pstmt.clearParameter();
   CallableStatement 
       調用存儲過程(部署在數據庫)真正的批處理
       procedure
         begin
            ....
         end
         
       缺點: 可移植性比較差
4.執行(發送)sql語句
   select : ResultSet rs = stmt.executeQuerry(sql);
        ResultSet rs = pstmt.execute();
   update/insert into/ delete : 返回一個整數 (smst.executeUpdate(sql))
5.處理結果集
   select :  while(rs.next()){....}
6.關閉JDBC資源
   逆序關閉 rs stmt/pstmt conn        

 

處理結果集

select :  ResultSet rs = stmt.executeQuerry(sql)  一個Statement對象在某一時刻只能有一個ResultSet對象,意味着必須處理上一次查詢結果後才能做下一個查詢
update/insert into/ delete : int n = stmt.executeUpdate(sql) 如果執行的是DDL,則返回0


ResultSet接口

重載的兩個方法:
1)String getString(int columnIndex)
2)String getString(String columnIndex)


在不知道sql語句類型的情況下   boolean execute(String sql) 返回布爾值
如果第一結果是ResultSet對象,返回true
如果是更新計數或不存在任何結果,返回false


CallableStatement
作用:執行存儲過程  (效率高,可移植性差)
設置OUT和IN參數: in:參數從Java程序傳到數據庫的存儲過程 
         out:參數從數據庫傳到JAVA程序的存儲過程
         

存儲過程

不同數據庫管理系統有各自定義的存儲過程的方式

--mysql
delimiter //

drop procedure procedure_name;//  --刪除已有的存儲過程

create procedure procedure_name(in p_字段, ...)
begin
insert into table_name(字段, ...)values(p_字段, ...) 
commit;
select count(*) into total from table_name where 字段 = p_字段 and ... and ...
end;//

delimiter;


java程序調用存儲過程

java數據類型和DBMS數據類型相互對應


3NF

    

List隊列和泛型的結合使用
 List<類型> list = new ArrayList<類型>();
 把數據添加到List隊列中  list.add(數組名);
 
 
構造器(無參和有參)的作用?
  初始化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章