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