-
dbcp數據庫連接池:
導入相關的jar包
在項目的根目錄下新建一個配置文件dbcp.properties,需要配置的屬性如下圖
查看全部 -
jdbc事務操作: 1.connection.setAutoCommit(false)關閉自動提交 2.把對數據庫的操作加入try catch塊 3.如果中間報錯,則在catch塊中因connection.rollback()回滾(在程序中可用connection.setSavepoint()設置保存點,rollback()也可以接受Savepoint參數,返回到指定保存點位置 ) 4.正常執行則在try塊末尾用connection.commit()手動提交
查看全部 -
JDBC對事務管理的支持 1、我們通過提交commit()或是回退rollback()來管理事務的操作 2、事務操作默認是自動提交 3、可以通過setAutoCommit(false)來禁止自動提交
查看全部 -
事務的特點
原子性:事務是一個完整的操作
一致性:當事務完成時,事務必須處于一致狀態
隔離性:對數據的=進行修改的所有并發事務都是彼此隔離的,類似于java中的同步原理。
永久性:事務完成之后,對數據庫的修改永久保持,一次性交易,概不退換。
查看全部 -
@JDBC---帶輸出參數的存儲過程
存儲過程的代碼:
CREATE?PROCEDURE?`sp_select_count`(OUT?count?INT(10)) BEGIN?? SELECT?COUNT(*)?INTO?count?FROM?user1;? END
調用過程:
//1.獲取連接 Connection?c?=?DBHelper.getConnection(); //2.獲得CallableStatement CallableStatement?cs?=?c.PrepareCall("call?sp_select_count(?)"); cs.registerOutParameter(1,Types.INTEGER);? //3.執行存儲過程 cs.execute(); //4.處理結果集 cs.getInt(1);
查看全部 -
@JDBC---帶輸入參數的存儲過程
存儲過程的代碼:
CREATE?PROCEDURE?`sp_select_nofilter`(IN?sp_name?VARCHAR(20)) BEGIN ??IF?sp_name?IS?NULL?OR?sp_name?=?''?THEN ??SELECT?*?FROM?user1; ?ELSE ??IF?LENGTH(sp_name)=11?AND?SUBSTRING(sp_name,1,1)=1?THEN ???SELECT?*?FROM?user1?WHERE?user_naem=sp_name; ??ELSE ???SELECT?*FROM?user1?WHERE?user_name?LIKE?CONCAT('%',sp_name,'%'); ??END?IF; ?END?IF; END
調用過程:
//1.獲取連接 Connection?c?=?DBHelper.getConnection(); //2.獲得CallableStatement CallableStatement?cs?=?c.PrepareCall("call?sp_select_filter(?)"); cs.setString(1,sp_name);? //3.執行存儲過程 cs.execute(); //4.處理結果集 ResultSet?rs?=?cs.getResultSet(); //5.遍歷結果集 while (rs.next()){??? rs.getString(...);??? ... }
查看全部 -
@JDBC---調用無參存儲過程
存儲過程的代碼:
CREATE?PROCEDURE?db_name.sp_name() BEGIN select?*?FROM?table_name; END
調用過程:
//1.獲取連接 Connection?c?=?DBHelper.getConnection();? //2.獲得CallableStatement CallableStatement?cs?=?c.PrepareCall( "call?sp_select()" );? //3.執行存儲過程 cs.execute(); //4.處理結果集 ResultSet?rs?=?cs.getResultSet(); //5.遍歷結果集 while (rs.next()){???? rs.getString(...);??? ... }
查看全部 -
1. Statement、PreparedStatement和CallableStatement都是接口(interface)。 2. Statement繼承自Wrapper、PreparedStatement繼承自Statement、CallableStatement繼承自PreparedStatement。 3. Statement接口提供了執行語句和獲取結果的基本方法; ? ?PreparedStatement接口添加了處理 IN 參數的方法; ? ?CallableStatement接口添加了處理 OUT 參數的方法。 4. a. Statement: ? ?普通的不帶參的查詢SQL;支持批量更新,批量刪除; ? ? b. PreparedStatement: ? 可變參數的SQL,編譯一次,執行多次,效率高; ? 安全性好,有效防止Sql注入等問題; ? 支持批量更新,批量刪除; ? ? c. CallableStatement: 繼承自PreparedStatement,支持帶參數的SQL操作; 支持調用存儲過程,提供了對輸出和輸入/輸出參數(INOUT)的支持; Statement每次執行sql語句,數據庫都要執行sql語句的編譯 ,最好用于僅執行一次查詢并返回結果的情形時,效率高于PreparedStatement。 PreparedStatement是預編譯的,使用PreparedStatement有幾個好處 1. 在執行可變參數的一條SQL時,PreparedStatement比Statement的效率高,因為DBMS預編譯一條SQL當然會比多次編譯一條SQL的效率要高。 2. 安全性好,有效防止Sql注入等問題。 3. ?對于多次重復執行的語句,使用PreparedStament效率會更高一點,并且在這種情況下也比較適合使用batch; 4. ?代碼的可讀性和可維護性。
查看全部 -
mybatis課程
查看全部 -
mybatis的特點
查看全部 -
hibernate的相關課程
查看全部 -
jdbc與替代產品的優缺點
查看全部 -
PreparedStatements? 預編譯的處理
查看全部 -
Isolation Durability
查看全部 -
? 原子性? 一致性
查看全部
舉報