鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻�
JDBC锛�
聽 聽 涓轰粈涔堣鏈夛紵
聽 聽 褰撳鏋淛ava绋嬪簭瑕佽繛鎺ユ暟鎹簱鐨勬椂鍊欙紝
聽 聽 閭d箞瑕侀�氳繃鍐欏搴旂殑鏁版嵁搴撻┍鍔紝
聽 聽 閭f牱鐨勮瘽鏁版嵁搴撴洿鏂板彲鑳借繖浜涢┍鍔ㄨ閲嶅啓锛�
聽 聽 浠庤�岄�犳垚澶ч噺鐨勪汉鍔涜祫婧愭氮璐广��
聽 聽 鏄粈涔堬紵
聽 聽 聽 聽java database
connection java绋嬪簭杩炴帴鏁版嵁搴撴妧鏈�(瑙勮寖)
聽 聽 聽 聽鏄敱SUN鍏徃寮�鍙戠殑涓�濂楁帴鍙c�佽鑼冿紝绫讳技浜嶴ervlet瑙勮寖閭f牱锛�
聽 聽 聽 聽JDBC杩欏瑙勮寖鏄敱鏁版嵁搴撳巶鍟嗗疄鐜扮殑銆�
聽 聽 浣滅敤锛�
聽 聽 聽 聽1.鍙互閫氳繃Java绋嬪簭绠$悊鏁版嵁搴擄紙鍙戦�丼QL璇彞锛�
聽 聽 聽 聽2.鍙互鍑忓皯浜哄姏璧勬簮锛�
聽 聽 聽 聽鍥犱负杩欎釜瑙勮寖鏄敱鏁版嵁搴撳巶鍟嗚嚜宸卞疄鐜颁簡锛屼粠鑰屾暟鎹簱鍗囩骇鐨勬椂鍊欙紝
聽 聽 聽 聽鍙槸闇�瑕佷笅杞芥暟鎹簱鍘傚晢鍦ㄥ畼缃戞彁渚涚殑瀵瑰簲鐨勯┍鍔ㄥ嵆鍙紝鑰屼笉蹇呴噸鍐欓┍鍔ㄣ��
聽 聽 鐗圭偣锛�
聽 聽 聽 聽1.涓�鏍蜂篃鏄彂閫佹暟鎹簱瀵瑰簲鐨勬暟鎹簱璇█鐨勮鍙�
聽 聽 聽 聽2.鐪熸杩炴帴鍒版暟鎹簱鐨勬槸鏁版嵁搴撻┍鍔ㄧ▼搴�
聽 聽 聽 聽3.鍦ㄦ棤鐗规畩鎯呭喌鎿嶄綔鏁版嵁搴撶殑鎺ュ彛鐨勬椂鍊欙紝鍩烘湰閮芥槸閫氳繃涓�浜涙帴鍙f潵鎿嶄綔鐨勩��
聽 聽 浣嶄簬锛�
1.Java_API---> java.sql.*
2.Java_API---> javax.sql.*
---------------------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫擄吉锛わ饥锛� 涓� 鏁版嵁搴撶殑鍏崇郴鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫�-------------------------------------------
JDBC涓庢暟鎹簱鐨勫叧绯伙紱
聽 聽鏁版嵁搴撴槸瀛樺偍鏁版嵁鐨勶紝鑰孞DBC鏄疭UN鍏徃寮�鍙戠殑涓�濂楁爣鍑�/瑙勮寖锛�
聽 聽 杩欏鏍囧噯瑙勮寖浜嗘暟鎹簱鍘傚晢濡傛灉瑕丣ava绋嬪簭浣跨敤杩欎釜鏁版嵁搴擄紝
聽 聽閭d箞浣犺繖涓暟鎹簱鍘傚晢蹇呴』瑕佸疄鐜癑DBC瑙勮寖锛岃�孞DBC瑙勮寖瑙勫畾浜嗭紝
聽 聽 聽 聽濡備綍杩炴帴鍒版暟鎹簱锛屽鏋滄搷浣滄暟鎹簱绛変竴绯诲垪鐨勬爣鍑�/鎺ュ彛(浠g爜)锛�
聽 聽 聽浠庤�屼娇寰楃▼搴忓紑鍙戜汉鍛樹笉鐢ㄥ湪浣跨敤涓嶅悓鐨勬暟鎹簱鐨勬椂鍊欙紝
聽 聽 聽 聽瑕佽嚜宸卞啓瀵瑰簲鐨勬暟鎹簱椹卞姩绋嬪簭锛屽苟涓斿湪鏇存柊鐨勬椂鍊欏彲鑳借閲嶅啓锛�
聽 聽鍥犱负鏁版嵁搴撳巶鍟嗗湪瀹炵幇JDBC鏍囧噯鐨勬椂鍊欏氨鍐欏ソ浜嗛┍鍔ㄧ▼搴忥紝
聽 聽 鎵�浠ュ紑鍙戜汉鍛樺彧鏄渶瑕佸埌鏁版嵁搴撳巶鍟嗙殑瀹樼綉涓嬭浇杩欎釜椹卞姩绋嬪簭
聽 聽鍥犱负Java绋嬪簭杩炴帴鏁版嵁搴撳氨鏄潬杩欎釜椹卞姩绋嬪簭鎼缓杩炴帴鐨勶紝
聽 聽 浠庤�屽彲浠ラ�氳繃Java浠g爜鎿嶄綔鏁版嵁搴�
鈼嗗皬缁擄紱JDBC鍜屾暟鎹簱鏄浉浜掍緷璧栫殑鍏崇郴锛�
JDBC瑕佷緷璧栨暟鎹簱鍘傚晢瀹炵幇杩欎釜鏍囧噯鎵嶅彲浠ラ�氳繃Java浠g爜鎿嶄綔鏁版嵁搴擄紝
鍚﹀垯绋嬪簭鍛樿鑷繁鍐欏搴旂殑鏁版嵁搴撻┍鍔ㄧ▼搴忋��
鏁版嵁搴撳巶鍟嗚鏄兂瑕丣ava绋嬪簭浣跨敤杩欎釜鏁版嵁搴撻偅涔堝繀椤昏瀹炵幇杩欎釜JDBC鏍囧噯锛�
鍥犱负缁存姢鏂逛究锛屽紑鍙戞晥鐜囨彁鍗囷紝鎴愭湰涓嬮檷绛夈�傘�傘�傘�傘�傘��
---------------------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫擄吉锛わ饥锛� 鈥斺�� 寮�鍙戞潯浠垛啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌-------------------------------------------
JDBC-寮�鍙戞潯浠讹紱
1.涓绘満鍦板潃(浠�涔堟柟寮忕櫥褰�)
a)蹇呴』瑕佹湁鐨�
2.鐢ㄦ埛鍚�
a)蹇呴』瑕佹湁
3.瀵嗙爜
a)蹇呴』瑕佹湁
4.绔彛
a)蹇呴』瑕佹湁
5.杩炴帴鐨勬暟鎹簱
a)鍙�夌殑
鈼嗏梿鈼哢RL鑼冨紡锛�
"jdbc:mysql://localhost:3306/鏁版嵁搴撳悕","鐢ㄦ埛鍚�","瀵嗙爜"
---------------------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫擄吉锛わ饥锛� 鈥斺�� 寮�鍙戞楠も啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌-------------------------------------------
JDBC-寮�鍙戞楠わ紱
1.涓嬭浇瀵瑰簲鐨勬暟鎹簱椹卞姩绋嬪簭
2.灏嗛┍鍔ㄧ▼搴忕殑鏋跺寘鎷峰埌MyEclipse宸ュ叿涓�
3.娉ㄥ唽椹卞姩绋嬪簭
4.鍒涘缓杩炴帴 ---> 鑾峰彇鍒拌繛鎺ュ璞�
5.鍒涘缓Statement鎺ュ彛鎴栦笅闈㈢殑瀛愭帴鍙� ---> 閫氳繃杩炴帴鎺ュ彛瀵硅薄鐨勬柟娉曞垱寤�
6.鍙戦�丼QL璇彞
7.澶勭悊缁撴灉 ---> 褰卞搷琛屾暟鍜岀粨鏋滄暟鎹�
8.鍏抽棴杩炴帴
聽 聽 瀵煎寘---> 鍔犺浇椹卞姩 ---> 鍒涘缓杩炴帴---> 鍒涘缓Statement瀵硅薄
聽 聽 聽 聽 聽 ---> 鍙戦�丼QL璇彞 ---> 澶勭悊缁撴灉 ---> 鍏抽棴杩炴帴
聽 聽 浠g爜锛�
聽 聽 1.娉ㄥ唽椹卞姩绋嬪簭
Class.forName("com.mysql.jdbc.Driver");
聽 聽 2.閫氳繃椹卞姩绋嬪簭绠$悊绫昏幏鍙栧埌杩炴帴鏁版嵁搴撴帴鍙e璞�
Connection connection =DriverManager.getConnection("url","user","password");
聽 聽 a)url鏄寚杩炴帴鏈嶅姟鍣ㄧ殑鍗忚锛岃繛鎺ユ柟寮忥紝绔彛绛夈�傘�傘�傘��
聽 聽 聽 浠g爜锛�
jdbc:mysql://localhost:3306/鏁版嵁搴撳悕(鍙啓/涓嶅啓)
聽 聽 3.閫氳繃杩炴帴鏁版嵁搴撳璞¤幏鍙栧埌Statement鎺ュ彛瀵硅薄(澹版槑鏁版嵁搴撹鍙ュ拰鍙戦��)
Statement st =connection.createStatement();
聽 聽 4.璋冪敤Statement鎺ュ彛鐨勬柟娉曞彂閫佹暟鎹簱璇彞缁欐暟鎹簱锛岃繑鍥炰竴涓奖鍝嶄簡鍑犺鐨勬暟鎹殑鍊�
聽 聽 int num =
st.executeUpdate(C/D/U/I); 聽 聽---> 瀵规暟鎹簱鐨勮繘琛孋/D/U/I鎿嶄綔
聽 聽 ResultSet rs =
st.executeQuery("Select"); ---> 鏌ヨ鏁版嵁搴撶殑鏁版嵁锛�
聽 聽 杩斿洖涓�涓粨鏋滈泦銆�
聽 聽 5.鍏抽棴杩炴帴(蹇呴』鍏抽棴锛岄伩鍏嶆暟鎹簱璐熻浇杩囬噸鑰屾鏈虹瓑鎯呭喌)
聽 聽 a)鍚庡紑鍏堝叧
st.close();
connection.close();
鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌 锛激锛迹 鈥斺�� 鏍稿績鎺ュ彛鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��
JDBC鏍稿績鎺ュ彛锛�
鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 浠ヤ笅鐨勬帴鍙i兘鏄綅浜嶫ava.sql.*鍖呬笅鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫�
+--0椤�--> Driver
---> 娉ㄥ唽鏁版嵁搴撻┍鍔ㄧ殑鎺ュ彛,JDBC椤跺眰鎺ュ彛銆�
|
| a)connect(String url,Perproty info);
---> 鍙互閫氳繃杩欎釜鏂规硶娉ㄥ唽椹卞姩
|
|
| 璇存槑锛涜繖鏄竴涓敞鍐屾暟鎹簱椹卞姩鎺ュ彛涔熸槸涓�涓狫DBC鐨勯《灞傛帴鍙o紝
| 鎯宠閫氳繃JDBC鎿嶄綔鏁版嵁搴擄紝閮借绗竴鏃堕棿鍔犺浇杩欎釜鎺ュ彛锛�
| 涔熷氨鏄疄鐜拌繖鎺ュ彛鐨勫璞★紝鎵嶅彲浠ユ敞鍐屾暟鎹簱椹卞姩銆�
|
| 聽 聽 鈼嗗洜涓篔DBC鎿嶄綔鏁版嵁搴撻兘鏄�氳繃鏁版嵁搴撻┍鍔ㄨ繖涓獟浠嬬殑銆�
|
|
|
|---1瀛�--->
聽|--- Connection 聽---> 杩炴帴鏁版嵁搴撴帴鍙�
|
| 聽 a)createStatement(); 聽--->
聽 鍒涘缓Statement瀵硅薄锛�
| 聽 鐢ㄤ簬鍙戦�佹暟鎹簱鎿嶄綔璇彞锛�
| 聽 鐢ㄤ簬鎿嶄綔鏁版嵁搴撶殑鏁版嵁銆�
|
| 聽 b)prepareStatement(String sql);
---> 聽 鍒涘缓PrepareStatement瀵硅薄锛�
| 聽 浠ュ強瀹氫箟棰勭紪璇戣鍙ャ��
|
| 聽 c)prepareCall(String sql); --->
聽鍒涘缓CallableStatement瀵硅薄锛�
| 聽 浠ュ強瀹氫箟棰勭紪璇戣鍙ワ紝
| 聽 鈼嗗彲浠ユ墽琛�
|
|
|
|---1瀛�--->鈫�
聽|--- Statement 聽 ---> 鍙戦�伮仿封梿闈欐�伮仿锋暟鎹簱璇█鐨勬搷浣滄暟鎹鍙ョ粰鏁版嵁搴撹蒋浠舵墽琛屻��
|
聽| a)executeUpdate(String sql);
聽---> 瀹氫箟SQL璇彞(C/D/U/I)鍙戦�佺粰
聽| 聽 聽 聽 聽 聽
(DDL锛咲ML)聽 聽 聽 聽 聽 聽
聽MySQL鏁版嵁搴�
|
聽| b)executeQuery(String sql); 聽
---> 瀹氫箟SQL璇彞(S)鍙戦�佺粰MySQL鏁版嵁搴�
| 聽 聽 聽(DQL)
|
|
|
聽|--2瀛�-->鈫�
|--- PreparedStatement ---> 鍙戦�伮仿封梿棰勭紪璇�( 鍔ㄦ��)路路鏁版嵁搴撹瑷�鐨勬搷浣滆鍙�
| 聽 聽 缁欐暟鎹簱杞欢鎵ц
|
| a)executeUpdate(); 聽 ---> 鍙戦�伮仿仿烽缂栬瘧濂界殑路路路SQL璇彞
| 聽(DDL锛咲ML)聽
聽(C/D/U/I)缁橫ySQL鏁版嵁搴�
|
|
| b)executeQuery(); 聽 ---> 聽鍙戦�伮仿仿烽缂栬瘧濂界殑路路路SQL璇彞(S)
| 聽 聽(DQL)聽 缁欐暟鎹簱杞欢鎵ц銆�
|
| c)setXX(int index,X); ---> 璁剧疆鏌愪竴涓瀹氫箟鍊�
|
|
+--3瀛�--> 聽
|--- CallableStatement 聽---> 鍙戦�伮仿仿烽缂栬瘧濂�(鍔ㄦ��)路路路鏁版嵁搴撹瑷�
聽 聽 聽鐨勬搷浣滆鍙ョ粰鏁版嵁搴撹蒋浠舵墽琛屻��
聽 聽 聽聽 聽 聽鈼嗗彲浠ュ彂閫佽皟鐢ㄥ瓨鍌ㄨ繃绋嬬殑璇彞
|--- ResultSet ---> 杩斿洖涓�涓煡璇㈣鍙ョ殑缁撴灉闆�
a)next() 聽---> 聽灏嗚幏鍙栧埌鐨勭粨鏋滈泦杩涜鎸囬拡鑾峰彇
b)getObject() 聽---> 聽鍙互鑾峰彇鍒颁换鎰忕被鍨嬬殑鍊�
c)getXX() 聽---> 聽鍙互鑾峰彇鍒版寚瀹氱被鍨嬬殑鍊�
聽 聽鈼嗏梿鈼嗏梿鈼嗘敞锛汣allableStatement ---> PreparedStatement ---> Statement 瀛愭帴鍙�
聽 聽 鈼嗘墍浠allableStatement鎷ユ湁鐖舵帴鍙e拰闂存帴鐖舵帴鍙g殑鍔熻兘锛�
聽 聽 聽骞朵笖鏈韩鐨勫姛鑳藉氨鏄敤浜庢搷浣滃瓨鍌ㄨ繃绋嬬殑
鈼嗏梿鈼嗘敞锛汮DBC鐨勬帴鍙i兘鏄綅浜嶫ava.sql.*鍜宩avax.sql.*
浣跨敤JDBC涓庢暟鎹簱杩涜浜や簰鐨勫熀鏈兘鏄帴鍙o紝
杈冨皯浣跨敤浣跨敤瀹炵幇绫昏繘琛屼氦浜掋��
鈼忎絾鏄彲浠ラ�氳繃DriverManager椹卞姩绠$悊绫昏幏鍙栧埌杩炴帴鏁版嵁搴撴帴鍙e璞�
--------------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹 鈥斺�� 杩炴帴椹卞姩涓夌鏂瑰紡鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫�-------------------------------------------
JDBC杩炴帴椹卞姩涓夌鏂瑰紡锛�
聽 聽 聽鏂瑰紡涓�锛�---> 閫氳繃Java_API涓嬬殑Driver鎺ュ彛鐨刢onnect(url,proprety info)
聽 聽 聽 a.閫氳繃MySQL鏋跺寘涓嬬殑Driver瀹炵幇绫伙紝鑾峰彇鍒癑ava_API涓嬬殑Driver鎺ュ彛瀵硅薄
聽 浠g爜锛�
Driver driver = newcom.mysql.jdbc.Derver();
聽 聽 聽 聽b.閫氳繃Driver鎺ュ彛鐨刢onnect()鏂规硶鑾峰彇鍒拌繛鎺ユ暟鎹簱鎺ュ彛瀵硅薄
聽 聽 聽 聽1)鍥犱负connect鏂规硶瑕佹眰浼犲叆涓�涓狿roperties瀵硅薄锛�
聽 聽 聽 聽鑰岃繖涓狿erprotise瀵硅薄鏄皝瑁呬簡MySQL鏁版嵁搴撶櫥褰曠殑鐢ㄦ埛鍜屽瘑鐮佺殑
Propertiesp = new Properties();
p.setProperty("user","鐢ㄦ埛鍚�");
p.setProperty("Password","瀵嗙爜");
2)璋冪敤connect()鏂规硶锛岃幏鍙栧埌杩炴帴鏁版嵁搴撴帴鍙e璞�
String url ="jdbc:mysql://localhost:3306/day16";
Connection connection =driver.connect(url,p);
c)鍏抽棴杩炴帴
connection.close();
椤哄簭锛�
Java_API.Driver---> Properties ---> Driver.connect() ---> Connection
聽 聽 聽 鏂瑰紡浜岋紱閫氳繃DriverManager绠$悊椹卞姩鎺ュ彛娉ㄥ唽椹卞姩绋嬪簭
聽 聽 聽 a)鑾峰彇鍒癑ava_API涓嬬殑Driver鎺ュ彛瀵硅薄
Driver driver = newcom.mysql.jdbc.Driver();
聽 聽 聽 聽b)璋冪敤绠$悊椹卞姩绫荤殑鏂规硶锛屼紶鍏ラ┍鍔ㄧ▼搴忓璞℃敞鍐岄┍鍔ㄧ▼搴�
DriverManager.registerDriver(driver);
聽 聽 聽 聽c)鍐嶉�氳繃DriverManger绫荤殑鏂规硶鑾峰彇鍒拌繛鎺ユ暟鎹簱瀵硅薄
Connectionconnection - DriverManager.getConnection(url,user,password);
聽 聽 聽 聽d)鍏抽棴杩炴帴
connection.close();
椤哄簭锛�
Java_API.Driver --->DriverManager.registerDriver()
--->DriverManager.getConection ---> Conenction
鏂瑰紡涓夛紱閫氳繃鍙嶅皠鐩存帴鍔犺浇MySQL鏋跺寘涓嬬殑Driver绫诲璞�
a)鑾峰彇鍒癕ySQL鏋跺寘涓嬬殑Driver绫诲璞★紝浠庤�屾敞鍐岄┍鍔�
Class.forName("com.mysql.jdbc.Driver");
b)閫氳繃DriverManager椹卞姩绠$悊绫绘柟娉�
Connection connection =DriverManager.getConnection(url,user,password);
鈼嗏梿鈼嗏梿鈼嗕负浠�涔堝彲浠ラ�氳繃鍔犺浇MySQL鏋跺寘涓嬬殑Driver绫诲氨鍙互娉ㄥ唽椹卞姩
聽 鍥犱负鍦―river绫绘湁涓�娈甸潤鎬佷唬鐮佸潡锛�
聽 鍙閫氳繃鍙嶅皠鑾峰彇鍒癕ySQL.Driver杩愯鏃剁被瀵硅薄灏变細锛�
聽 鑷姩璋冪敤Java.sql.DriverManager椹卞姩绠$悊绫荤殑锛�
聽 registerDriver鏂规硶浼犲叆涓�涓狹ySQL.Driver鎺ュ彛瀵硅薄锛�
聽 娉ㄥ唽椹卞姩锛屽洜涓篗ySQL.Driver绫诲疄鐜颁簡->+
+--------------------|
聽 |---->java.sql.Driver鎺ュ彛
static {
try {
java.sql.DriverManager.registerDriver(newDriver());
} catch (SQLExceptionE) {
throw new RuntimeException("Can'tregister driver!");
}
}
-----------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹 鈥斺�� Statement鎺ュ彛瀹炵幇浠g爜瑙f瀽鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫�-------------------------------------------
JDBC_Statement鎺ュ彛浠g爜瑙f瀽锛�
聽 聽1.閫氳繃鍔犺浇MySQL鏋跺寘涓嬬殑Driver绫伙紝
聽 聽 聽 聽浠庤�屽姞杞絁ava_API涓嬬殑Driver椹卞姩鎺ュ彛瀵硅薄娉ㄥ唽椹卞姩
Class.forName("com.mysql.jdbc.Driver");
聽 聽2.閫氳繃椹卞姩绠$悊绫诲璞¤幏鍙栧埌杩炴帴鏁版嵁搴撴帴鍙e璞★紝
聽 聽 骞朵笖瀹氫箟杩炴帴鏁版嵁搴撶殑鍙傛暟銆�
Connection connection =DriverManager.getConection(url,user,password);
聽 聽3.閫氳繃杩炴帴鏁版嵁搴撴帴鍙e璞¤皟鐢╟reateStatement()鏂规硶鍒涘缓Statement鎺ュ彛瀵硅薄
Statement st =connection.createStatement();
聽 聽5.閫氳繃璋冪敤Statement鐨勬柟娉曞彂閫丼QL璇彞缁欐暟鎹簱浠庤�屾搷浣滄暟鎹簱鐨勬暟鎹�
聽 聽 a)int
st.executeUpdate(C/D/U/I); 聽---> 瀹氫箟DDL鍜孌ML璇彞
聽 聽 聽骞朵笖鍙戦�佺粰鏁版嵁搴�
b)ResultSetst.executeQuery(Select);
聽 聽 聽 聽---> 瀹氫箟DQL璇彞
聽 聽 聽 聽鍙戦�佺粰鏁版嵁搴�
聽 聽 聽骞朵笖杩斿洖涓�涓粨鏋滈泦
聽 聽 聽聽 聽6.閬嶅巻鑾峰彇鍒扮殑缁撴灉闆�
while(result.next()){
result.get绫诲瀷("瀛楁鍚�")
聽 聽 聽 ---> 鑾峰彇褰撳墠鍒楁寚瀹氱殑瀛楁鍊�
result.get绫诲瀷(intindex);
聽 聽 聽 ---> 鑾峰彇鎸囧畾瀛楁浣嶇疆鐨勫��
}
聽 聽7.鍏抽棴杩炴帴(鍚庡紑鍏堝叧)
st.close();
connection.close();
------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹 鈥斺�� PreparedStatement鎺ュ彛瀹炵幇浠g爜瑙f瀽鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫�-------------------------------------------
JDBC_PreparedStatement鎺ュ彛浠g爜瑙f瀽锛�
聽 聽1.閫氳繃鍔犺浇MySQL鏋跺寘涓嬬殑Driver绫伙紝
聽 聽 聽 聽 浠庤�屽姞杞絁ava_API涓嬬殑Driver椹卞姩鎺ュ彛娉ㄥ唽椹卞姩
Class.forName("com.mysql.jdbc.Driver");
聽 聽 聽 聽2.閫氳繃椹卞姩绠$悊绫诲璞¤幏鍙栧埌杩炴帴鏁版嵁搴撴帴鍙e璞★紝
聽 聽 骞朵笖瀹氫箟杩炴帴鏁版嵁搴撶殑鍙傛暟銆�
Connection connection =DriverManager.getConection(url,user,password);
聽 聽 聽 聽3.閫氳繃杩炴帴鏁版嵁搴撴帴鍙e璞$殑鏂规硶瀹氫箟棰勭紪璇戠殑SQL璇彞锛�
聽 聽 聽 聽骞朵笖鑾峰彇鍒癙reparedStatement瀵硅薄
PreparedStatement prepare = connection.preparedStatement(C/D/U/I ?);
聽 聽4. 缁欓缂栬瘧鐨凷QL璇彞鐨勯鐣欏�艰祴鍊�
聽 聽 a)prepare.set绫诲瀷(int index,鍊�); ---> 鎸囧畾棰勭暀鍊肩殑璧嬪��
聽 聽5.璋冪敤鏂规硶鍙戦�佺粰鏁版嵁搴�
聽 聽 a)int
prepare.executeUpdate(); ---> 鍙戦�丏DL鍜孌ML璇彞
聽 聽 ======鐩存帴鍙戦�侊紝鏃犻渶瀹氫箟褰㈠弬======
聽 聽 b)ResuleSet
prepare.executeQuery(); ---> 鍙戦�丏QL璇彞
聽 聽6.鑾峰彇鍒扮粨鏋滈泦鏁版嵁
while(result.next()){
result.get绫诲瀷("瀛楁鍚�")
聽 聽 聽 ---> 鑾峰彇褰撳墠鍒楁寚瀹氱殑瀛楁鍊�
result.get绫诲瀷(intindex);
聽 聽 聽 ---> 鑾峰彇鎸囧畾瀛楁浣嶇疆鐨勫��
}
聽 聽7.鍏抽棴杩炴帴(鍚庡紑鍏堝叧)
prepared.close();
connection.close();
------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹 鈥斺�� CallableStatement鎺ュ彛瀹炵幇浠g爜瑙f瀽鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫�-------------------------------------------
JDBC_CallableStatement鎺ュ彛瀹炵幇浠g爜锛�
聽 聽1.鍔犺浇MySQL鏋跺寘涓嬬殑Driver绫伙紝
聽 聽 浠庤�屽姞杞絁ava_API涓嬬殑Driver椹卞姩鎺ュ彛娉ㄥ唽椹卞姩
Class.forName("com.mysql.jdbc.Driver");
聽 聽2.閫氳繃椹卞姩绠$悊绫昏幏鍙栧埌杩炴帴鏁版嵁搴撴帴鍙e璞�
Connection connection =DriverManager.getConnection(url,user,password);
聽 聽3.閫氳繃杩炴帴鏁版嵁搴撴帴鍙e璞$殑鏂规硶瀹氫箟棰勭紪璇戣鍙�
聽 聽 鑾峰彇鍒癈allableStatement瀵硅薄
CallableStatement callable =connection.prepareCalla(S ?);
聽 聽4.瀹氫箟杈撳嚭鍊�
a)
聽 聽 聽=====濡傛灉鏄幏鍙栬緭鍑哄�肩殑璇濊鍏堟敞鍐屼竴涓緭鍑哄��=====
聽 聽 聽callable.registerParameter(int
index,java.sql.Types.绫诲瀷);
聽 聽 --->棰勭紪璇戝�肩殑浣嶇疆
聽 聽--->绫诲瀷
聽 聽5.璋冪敤鏂规硶鍙戦�佺粰鏁版嵁搴�
a)
聽 聽 =====瀛樺偍杩囩▼鐨劼仿疯緭鍏ヂ仿峰�兼槸杩斿洖涓�涓粨鏋滈泦
Resultcallable.executeQuery();
b)
聽 聽 =====瀛樺偍杩囩▼鐨劼仿疯緭鍑郝仿峰�兼槸鍙互鐩存帴鑾峰彇鐨�
Stringcallable.getString(int index)
聽 聽 聽 聽 聽 ---> 鑾峰彇鍒伴缂栬瘧鐨勫��
聽 6.閬嶅巻缁撴灉闆�
while(result.next()){
result.get绫诲瀷("瀛楁鍚�")
聽 聽 聽 ---> 鑾峰彇褰撳墠鍒楁寚瀹氱殑瀛楁鍊�
result.get绫诲瀷(intindex);
聽 聽 聽 ---> 鑾峰彇鎸囧畾瀛楁浣嶇疆鐨勫��
}
聽 聽7.鍏抽棴杩炴帴(鍚庡紑鍏堝叧)
prepared.close();
connection.close();
鈼嗏梿鈼嗏梿鈼嗘敞锛涘鏋滄槸瑕侀�氳繃JDBC鍒涘缓瀛樺偍杩囩▼瑕佹敞鎰忔崲琛岀殑闂锛�---> /n
鍥犱负瀛樺偍杩囩▼鏄崲琛屾墽琛岀殑銆�
------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹 鈥斺�� Statement鍜孭reparedStatement鐨勫尯鍒啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌-------------------------------------------
+------------------------------------------------+
| 璇硶 聽 聽
聽 聽| 聽 鏁堢巼 聽 聽 聽 | 聽
聽 瀹夊叏鎬
+------------------------------------------------+
聽 聽 聽 Statement 聽鏄竴涓潤鎬佽娉� 聽 聽 聽鏁堢巼浣� 聽 聽
聽 鍙敞鍏ョ殑
聽 聽 聽 PreparedStatement
聽鏄竴涓缂栬瘧鐨� 聽 聽 聽鏁堢巼楂� 聽 聽 聽 聽 聽 涓嶅彲娉ㄥ叆鐨�
|
|
鈫�
聽1=1 杩欎釜鏄亽绛変簬鍙互鐢ㄤ簬鍋氭伓鎰忔搷浣�
1<>1
聽濡傦紱
select * from student whereid=1 OR 1=1
鈼嗏梿鈼嗘敞锛涙晥鐜囩殑璇濆湪MySQL浣撶幇鐨勪笉鏄庢樉
鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌 锛激锛迹 鈥斺�� 鎵瑰鐞嗏啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��
JDBC鎵瑰鐞嗭紱
聽 涓轰粈涔堬紵
聽 聽褰撹涓�娆″彂閫丯鏉¤鍙ュ埌鏁版嵁鐨勬椂鍊欏彲浠ユ彁楂樻晥鐜囷紝
聽 聽鍥犱负濡傛灉涓�鏉′竴鏉″彂閫佷細浣垮緱鐢ㄦ埛浣撻獙宸�
聽 浣滅敤锛�
聽 浣跨敤鎻愰珮鏁堢巼锛屽洜涓轰竴娆℃�у彂閫丯鏉¤鍙ュ彲浠ユ彁楂樻晥鐜�
聽 鐗圭偣锛�
聽 涓�娆℃�у彂閫丯鏉¤鍙�
聽 鏂规硶锛�
聽 addBatch(); 聽 聽
聽---> 灏嗚鍙ユ坊鍔犲埌鎵瑰鐞嗚鍙ョ┖闂翠腑
聽 executeBatch(); 聽---> 鍙戦�佹墍鏈夌殑鎵瑰鐞嗙┖闂寸殑璇彞
聽 clearBatch(); 聽 聽---> 鎯呭喌鎵瑰鐞嗙┖闂寸殑璇彞
鈼嗏梿鈼嗘敞杩欎釜绌洪棿灏辨槸杞欢鐨勫唴瀛樼紦瀛�
----------------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫擄吉锛わ饥锛� 鈥斺�� 鎵瑰鐞嗗疄鐜颁唬鐮佽В鏋愨啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌-------------------------------------------
鎵瑰鐞嗗疄鐜颁唬鐮佽В鏋愶紱
聽 1.鍔犺浇MySQL鏋跺寘涓嬬殑Driver绫伙紝
聽 聽 浠庤�屽姞杞絁ava_API涓嬬殑Driver椹卞姩鎺ュ彛娉ㄥ唽椹卞姩
Class.forName("com.mysql.jdbc.Driver");
聽 2.閫氳繃椹卞姩绠$悊绫昏幏鍙栧埌杩炴帴鏁版嵁搴撴帴鍙e璞�
Connection connection =DriverManager.getConnection(url,user,password);
聽 聽 聽 3.閫氳繃杩炴帴鏁版嵁搴撴帴鍙e璞$殑鏂规硶瀹氫箟棰勭紪璇戠殑SQL璇彞锛�
聽 聽 聽 聽骞朵笖鑾峰彇鍒癙reparedStatement瀵硅薄
PreparedStatement prepare = connection.preparedStatement(C/D/U/I ?);
聽 4.瀹氫箟杈撳嚭鍊硷紝骞朵笖杩涜鎵瑰鐞嗘搷浣�
for(int i = 0; i < 10000; i++){
聽 prepare.setInt(i); 聽 聽
聽---> 缁欓缂栬瘧璇彞娣诲姞鍊�
聽 prepare.addBatch(); 聽
聽---> 灏嗚繖鏉¤鍙ユ坊鍔犲埌鎵瑰鐞嗙┖闂翠腑
聽 if(i % 1000 == 0){ 聽 聽
---> 姣忎竴娆″彂閫�1000鏉�
聽 聽 prepare.executeBatch()
---> 鍙戦�佹壒澶勭悊绌洪棿鐨勮鍙ョ粰鏁版嵁搴�
聽 聽 prepare.clearBatch() ---> 娓呯┖鎵瑰鐞嗙┖闂寸殑璇彞
}
}
聽 聽 聽 5.鍏抽棴杩炴帴
prapare.close();
connection.close();
鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌 锛激锛迹 鈥斺�� 鑾峰彇鑷闀垮�尖啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��
JDBC鑾峰彇鑷闀跨殑鍊硷紱
浠g爜锛�
1.鍦ㄥ畾涔夐缂栬瘧璇彞鐨勬槸娣诲姞涓�涓舰鍙係tatement.RETURN_GENERIC_KEYS
PreparedStatement prepare =conenciton.getPrepareStatement(sql,Statement.RETURN_GENERIC_KEYS);
2.閫氳繃getGenericKey()鑾峰彇鍒拌嚜澧為暱鐨勫�肩殑缁撴灉闆�
ResultSet result = prepare.getGenericKey();
3.閬嶅巻
銆傘�傘�傘�傘�傘�傘��
鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌 锛激锛迹 鈥斺�� 鏂囦欢瀛樺彇鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��
JDBC鏂囦欢瀛樺彇锛�
聽 聽 涓轰粈涔堝彲浠ュ瓨锛�
聽 聽 鍥犱负鏁版嵁搴撳叾瀹炲氨鏄被浼奸�氳繃IO鐨勬妧鏈瓨鍌ㄥ埌纭洏鐨勶紝
聽 聽 鑰屽瓨鍌ㄥ埌鏁版嵁搴撴湰璐ㄦ槸瀛樺偍鍒扮‖鐩�
聽 聽 瀛樼殑鏄粈涔堟枃浠讹紵
聽 聽 聽 聽鏂囨湰鏂囦欢
聽 聽 聽 聽浜岃繘鍒舵枃浠�
聽 聽 瀛樺偍绫诲瀷锛�
聽 聽 聽 鏂囨湰鏂囦欢锛�
text聽Mediumtext 聽longtext
鈫撯啌鈫� 聽聽 鈫撯啌鈫� 聽 聽 聽 聽鈫撯啌鈫�
64KB 聽聽 16M 聽 聽 聽 聽4GB
聽 聽 聽 浜岃繘鍒舵枃浠讹紱
blob 聽MediumBlob聽longBlob
鈫撯啌鈫� 聽 聽 鈫撯啌鈫撯啌鈫撯啌
64KB 聽 聽16M4GB
----------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹 鈥斺�� 瀹炵幇浜岃繘鍒舵枃浠跺瓨鍙栦唬鐮佽В鏋愨啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌-------------------------------------------
聽JDBC浜岃繘鍒舵枃浠跺瓨鍙栦唬鐮侊紱
鈼嗗瓨锛�
聽 聽 1.鍔犺浇MySQL鏋跺寘涓嬬殑Driver绫伙紝
聽 聽 浠庤�屽姞杞絁ava_API涓嬬殑Driver椹卞姩鎺ュ彛娉ㄥ唽椹卞姩
Class.forName("com.mysql.jdbc.Driver");
聽 聽 2.閫氳繃椹卞姩绠$悊绫昏幏鍙栧埌杩炴帴鏁版嵁搴撴帴鍙e璞�
Connection connection =DriverManager.getConnection(url,user,password);
聽 聽3.閫氳繃杩炴帴鏁版嵁搴撴帴鍙e璞$殑鏂规硶瀹氫箟棰勭紪璇戠殑SQL璇彞锛�
聽 聽 聽 聽骞朵笖鑾峰彇鍒癙reparedStatement瀵硅薄
PreparedStatement prepare =connection.preparedStatement(C/D/U/I ?);
聽 聽 4.鑾峰彇鍒拌緭鍏ユ枃浠舵祦锛屼紶鍏ュ埌棰勭紪璇戣鍙ョ殑鍊�
prepare.setBlob(1,newFileInputStream("c:/xx..jpg");
聽 聽 ===娉紱濡傛灉鏄枃鏈枃浠跺垯鏄紶鍏ileReader("c:/");
聽 聽 5.鍙戦�佺粰鏁版嵁搴�
prepare.executeUpdate();
聽 聽 6.鍏抽棴杩炴帴
prepare.close();
connection.close();
聽 聽 聽 鈼嗗彇锛�
聽 聽 聽1.鍔犺浇MySQL鏋跺寘涓嬬殑Driver绫伙紝
聽 聽 浠庤�屽姞杞絁ava_API涓嬬殑Driver椹卞姩鎺ュ彛娉ㄥ唽椹卞姩
Class.forName("com.mysql.jdbc.Driver");
聽 聽 2.閫氳繃椹卞姩绠$悊绫昏幏鍙栧埌杩炴帴鏁版嵁搴撴帴鍙e璞�
Connection connection = DriverManager.getConnection(url,user,password);
3.閫氳繃杩炴帴鏁版嵁搴撴帴鍙e璞$殑鏂规硶瀹氫箟棰勭紪璇戠殑SQL璇彞锛�
聽 聽 聽 聽骞朵笖鑾峰彇鍒癙reparedStatement瀵硅薄
PreparedStatement prepare =connection.preparedStatement(Sel ?);
聽 聽 4.璋冪敤鏂规硶鑾峰彇鍒扮粨鏋滈泦
ResultSet prepare.executeQuery();
聽 聽 5.閬嶅巻缁撴灉闆嗚幏鍙栧埌鏁版嵁搴撶殑鏂囦欢杈撳叆娴�
while(result.next()){
InputStream =result.getBlob().getBinaryStream();
聽 聽 ---> 鑾峰彇鍒版枃浠剁被鍨嬪��
聽 聽 聽 聽璋冪敤鏂规硶鑾峰彇鍒颁簩杩涘埗
聽 聽 聽 聽聽 聽 杈撳叆娴�
聽 聽 ===娉紱濡傛灉鏄枃鏈枃浠跺垯浣跨敤getClob().getCharacterStream();
FileOutputStream fos = newFileOutputStream("c:/x.jpg");
聽 聽 鈼�---> 鎸夌収IO娴佺殑鏂瑰紡鍐欏嚭
}
鈼嗏梿鈼嗏梿鈼嗘敞锛涘湪鏁版嵁搴撲腑鏄笉浼氬瓨鍌ㄥ浘鐗囧拰鏂囦欢鐨勶紝
鍥犱负鏁版嵁搴撶殑璧勬簮鏄潪甯稿疂璐电殑锛�
鈼嗗洜涓哄瓨鍌ㄧ殑鏄枃浠剁殑璺緞锛�
鍦ㄤ粠鏁版嵁搴撲腑鑾峰彇鍒拌繖涓枃浠惰矾寰�
鍦ㄤ粠杩欎釜璺緞涓姞杞姐�傘�傘�傘�傘�傘��
鈼嗛櫎闈炴槸閲嶈锛屾満瀵嗙瓑鏂囦欢鎵嶄細瀛樻斁鍒版暟鎹簱绛夈�傘�傘�傘�傘��
鈼嗏梿鈼嗏梿鈼嗘敞锛涘鏋滃湪鏁版嵁搴撳瓨鍌ㄧ殑鏂囦欢鏈韩缂栫爜鏄疓BK鐨勶紝
閭d箞浼氬鑷寸紪鐮佷笉涓�鑷寸殑鏃跺�欎細鍑虹幇涔辩爜锛�
聽鍥犱负鏁版嵁搴撲竴鑸兘鏄缃垚UTF-8鐨勶紝
聽 鎵�浠ヤ竴鑸兘鏄敼鍙樻枃浠剁殑缂栫爜闆嗐��
鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌 鏁版嵁搴撲簨鍔♀啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��
JDBC浜嬪姟锛�
涓轰粈涔堣鏈夛紵
SQL璇彞鍦↗DBC鎵ц鐨勬椂鍊欐槸鎵ц鍒颁竴鏉¤鍙ュ垯鍙戦�佷竴鏉¤鍙ラ兘SQL鏁版嵁搴擄紝
閭d箞濡備綍瀹炵幇N鏉QL璇彞浠g爜鍙戦�佸埌鏁版嵁搴撶殑涓�鑷村悓姝ユ�э紵
鏄粈涔堬紵
浜嬪姟鏄暟鎹簱鏈韩鐨勭壒寰侊紝鍙湁鏁版嵁搴撴敮鎸佹墠鏈変簨鍔℃蹇典互鍙婂鐞嗭紝
鍩烘湰鍏崇郴鍨嬬殑鏁版嵁搴撻兘鏀寔浜嬪姟锛岃�岄潪鍏崇郴鍨嬬殑鏁版嵁搴撲笉涓�瀹氭敮鎸佷簨鍔�
浣滅敤锛�
浣垮緱SQL璇彞浠g爜鎵ц鐨勪竴鑷存�э紝
鏄竴涓皢澶氭潯SQL璇彞缁戝畾鐨勶紝
澶辫触涓�璧峰け璐ユ垚鍔熶竴璧锋垚鍔熴��
鐗圭偣锛�
聽 聽 1.鏁版嵁搴撶殑寮曟搸鏄疘nnoDB绫诲瀷锛屽熀鏈兘鏀寔
聽 聽 2.澶氭潯浠g爜涓�璧锋垚鍔燂紝涓�璧峰け璐ャ��
鏂规硶锛�
聽 聽 聽1.set autocommit = 0
---> 寮�鍚簨鍔″鐞嗭紝鍏抽棴鑷姩鎻愪氦
聽 聽 聽 鈼嗚繖涓缃槸涓�涓眬閮ㄧ殑璁剧疆锛�
聽 聽 聽 涓嶄細鏀瑰彉鍒拌繖涓猘otocommit鐨勫叏灞�鍙橀噺
聽 聽 聽2.commit ---> 鎻愪氦浜嬪姟锛屼竴鏃︽彁浜や簡鍒欐棤娉曞弽鎮斻��
聽 聽 聽3.rollback ---> 鍥炴粴浜嬪姟锛屼竴鑸槸鍥炴粴鍒颁簨鍔$殑寮�鍚偣锛�
聽 聽 聽 鎴栬�呮槸涓婁竴涓簨鍔$殑缁撴潫鐐广��
鈼嗏梿娉紱涓�涓簨鍔″彲浠ョ湅鎴愭槸涓�涓皬鐨勫伐浣滅┖闂达紝
鑷充簬杩欎釜宸ヤ綔绌洪棿鐨勯棬鏄惁鎵撳紑銆佷笂閿佺瓑銆傘�傘�傘��
鍒欐槸鐪嬭繖涓伐浣滅┖闂寸殑路路路闅旂鐗瑰緛路路路鐨劼仿风骇鍒仿风殑銆傘�傘�傘�傘��
--------------------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撴暟鎹簱浜嬪姟鐨勫洓澶х壒寰佲啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌-------------------------------------------
鏁版嵁搴撲簨鍔$殑鍥涘ぇ鐗瑰緛锛�
聽 聽 聽涓�銆佸師瀛愭�э紱浜嬪姟鐨勬瘡涓�涓厓绱�(SQL璇彞)閮芥槸涓嶅彲鍒嗗壊鐨勫崟鍏冿紝
聽 聽 聽 瑕佷箞涓�璧锋垚鍔燂紝瑕佷箞涓�璧峰け璐ャ��
聽 聽 聽浜屻�佷竴鑷存�э紱浜嬪姟鍒欐槸璁╂暟鎹簱鐨勭姸鎬佽浆鎹㈡垚鍙﹀鐨勪竴涓姸鎬侊紝
聽 聽 聽 鑰岃繖涓浆鎹㈡椂鐨勭姸鎬佹槸涓�鑷寸殑銆�
聽 聽 聽 聽 濡傦紱鏇存敼鍓嶆暟鎹簱鐨勭姸鎬佸拰鏇存敼鍚庣殑鏁版嵁搴撶姸鎬佹槸涓�鑷寸殑銆�
聽 聽 聽 聽鑰屼笉浼氭洿鏀规椂鍑虹幇寮傚父鐨勭姸鎬侊紝鏄洿鏀瑰悗鐨勭姸鎬併��
聽 聽 聽 涔熷氨鏄嚭鐜板紓甯镐簡锛岃繕鏄洿鏀规垚鍔熶簡銆�
聽 聽 聽涓夈�侀殧绂绘�э紱澶氫釜浜嬪姟骞跺彂鎿嶄綔鍚屼竴涓叡浜暟鎹殑鏃跺�欙紝
聽 聽 聽 聽 姣忎竴涓簨鍔$殑鎿嶄綔鏄笉浼氬奖鍝嶅埌鍙﹀鐨勪竴涓簨鍔$殑鎿嶄綔銆�
聽 聽 聽鍥涖�佹寔涔呮�э紱浜嬪姟涓�鏃︽彁浜や簡锛屽垯鏄案涔呯殑淇濆瓨鍦ㄧ‖鐩樹笂鐨勶紝鏄笉鍙互鍥炴粴銆�
--------------------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撴暟鎹簱浜嬪姟闅旂鐨勭骇鍒啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌-------------------------------------------
鏁版嵁搴撲簨鍔¢殧绂荤殑绾у埆锛�
聽 聽 涓轰粈涔堣鏈夐殧绂荤殑绾у埆锛�
聽 聽 濡傛灉娌℃湁闅旂鐨勭骇鍒殑璇濓紝
聽 聽 澶氫釜浜嬪姟鍏卞悓鎿嶄綔涓�涓叡浜暟鎹殑鏃跺�欎細鍑虹幇銆�
聽 聽 a)鑴忚
聽 聽 b)涓嶅彲閲嶅璇�
聽 聽 c)骞昏
聽 聽 鏈夊嚑涓骇鍒紵
聽 聽 鏈変簲涓骇鍒��
聽 聽 绾у埆锛�
聽 聽 聽 1.read uncommitted
聽---> 聽 鏈�浣庣骇鍒�
聽 聽 聽 2.read committed
聽 聽---> 聽 闃叉鑴忚
聽 聽 聽 3.repeatable read
聽 ---> 聽 闃叉涓嶅彲閲嶅璇诲拰鑴忚
聽 聽 聽 4.Serializable 聽
聽 聽---> 聽 闃叉骞昏銆佷笉鍙噸澶嶈銆佽剰璇�
聽 聽 榛樿绾у埆锛�
MySQL榛樿鏄�--->repeatable read
oracle榛樿鏄�--->read committed
聽 聽 鍛戒护锛�
聽 聽 聽 set global transaction
isolation level 绾у埆
select@@global.tx_isolation
--------------------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撴暟鎹簱浜嬪姟骞跺彂鐨勭幇璞♀啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌-------------------------------------------
鏁版嵁搴撲簨鍔″苟鍙戠殑鐜拌薄锛�
聽 聽 閮芥槸鍥犱负闅旂绾у埆杩囦綆鎵嶅嚭鐜扮殑銆�
聽 聽 1.鑴忚锛涗竴涓簨鍔¤鍙栧埌鍙︿竴涓簨鍔¤繕娌℃湁鎻愪氦鐨勬洿鏂版暟鎹��
聽 聽 濡傦紱A浜嬪姟鏇存敼琛ㄦ暟鎹殑鏃跺�欒繕娌℃湁鎻愪氦锛�
聽 聽 鍒欒B浜嬪姟鑾峰彇鍒颁簡锛屽湪杩欐椂A浜嬪姟杩涜浜嗗洖婊氾紝
聽 聽 鍒欎細鍑虹幇涓�涓楠楃殑鐜拌薄銆�
聽 聽 set read committed; ---> 鎻愰珮绾у埆
聽 聽 2.涓嶅彲閲嶅璇伙紱涓�涓簨鍔¤鍙栧埌鍙︿竴涓簨鍔$殑宸叉彁浜ょ殑鏇存柊鏁版嵁
聽 聽 濡傦紱A浜嬪姟鍦ㄨ繘琛岀涓�娆℃煡琛ㄧ殑鏃跺�欐暟鎹槸娌℃湁鍙戠敓鏇存敼鐨勶紝
聽 聽 鑰孊浜嬪姟鍦ˋ浜嬪姟绗竴娆℃煡琛ㄥ畬鎴愪箣鍚庡氨绔嬪埢鏇存敼浜嗚〃锛�
聽 聽 浣垮緱A浜嬪姟鍦ㄧ浜屾杩涜鏌ヨ〃鐨勬椂鍊欏嚭鐜颁簡涓嶄竴鏍风殑鏁版嵁銆�
聽 聽 set repeatable read; ---> 鎻愰珮绾у埆
聽 聽 3.骞昏锛涗竴涓簨鍔¤鍙栧埌鍙︿竴涓簨鍔$殑宸叉彁浜や簡鐨勬彃鍏ユ暟鎹�
聽 聽 濡傦紱A浜嬪姟鍦ㄨ繘琛岀涓�娆℃煡琛ㄧ殑鏃跺�欐槸娌℃湁Id涓�3鐨勬暟鎹殑锛�
聽 聽 鑰孊浜嬪姟鍒欏湪A浜嬪姟瀹屾垚绗竴娆℃煡琛ㄤ箣鍚庡氨鎻掑叆浜咺d涓�3鐨勬暟鎹�
聽 聽 浣垮緱A浜嬪姟鍦ㄦ彃鍏ョ殑鏃跺�欏氨鏃犳硶鎻掑叆浜嗐��
聽 聽 鍙槸鍦ㄦ煡琛ㄧ殑鏃跺�欒繕鏄病鏈夋敼鍙橈紝鍙湁A浜嬪姟閫�鍑轰簡浜嬪姟锛�
聽 聽 鎴栬�呮槸鍏抽棴浜嬪姟(set autocommit=1)鎵嶅彲浠ョ湅鍒版柊鐨勬暟鎹��
聽 聽 鍥犱负鍦ㄤ笉鍙噸澶嶈鐨勬椂鍊欏凡缁忔彁楂樹簡绾у埆浜嗐��
聽 聽 set serializable; ---> 鎻愰珮绾у埆
-------------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹 鈥斺�� 瀹炵幇浜嬪姟澶勭悊浠g爜瑙f瀽鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫�-------------------------------------------
JDBC瀹炵幇浜嬪姟澶勭悊浠g爜瑙f瀽锛�
聽闇�姹傦紱瀹㈡埛琛ㄥ崟鐨凙鍚態杞处1000锛�
聽 鑰屽悓鏃禔-1000锛孊+1000锛屽鏋滀腑闂村嚭鐜板紓甯稿垯杞处澶辫触
try{
1.鍔犺浇MySQL鏋跺寘涓嬬殑Driver绫伙紝浠庤�屾敞鍐岄┍鍔�
Class.forName("com.mysql.jdbc.Driver");
2.閫氳繃绠$悊椹卞姩绫诲璞¤幏鍙栧埌杩炴帴鏁版嵁搴撴帴鍙e璞�
Connection connection = DriverManager.getConnection(url,user,password);
3.寮�鍚簨鍔″鐞�
connection.setAutoCommit(false);
4.閫氳繃杩炴帴鏁版嵁搴撴帴鍙e璞″畾涔夐缂栬瘧璇彞骞朵笖鑾峰彇鍒癙reparedStatement瀵硅薄
PreparedStatement prepare_A =conneciton.prepareStatement("C/D/U/I ?-1000");
PreparedStatement prepare_B = connection.prepareStatement("C/D/U/I?-1000");
5.缁欓缂栬瘧璇彞璧嬪��
prepare_A.setXX(int index,XX);
prepareB.setXX(int index,XX)
6.璋冪敤鏂规硶鍙戦��
prepare_A.executeUpdate();
鈻犫枲鈻� 妯℃嫙鍑虹幇寮傚父鈻犫枲鈻�
int i = 10/0;
prepare_B.executeUpdate();
7.鎻愪氦
connection.commit();
//鍏抽棴杩炴帴
prepare_A.close();
prepare_B.close();
connection.close();
8.鍑虹幇寮傚父
}catch(Exception e){
9.濡傛灉鍑虹幇浜嗗紓甯稿垯杩涜涓�涓洖婊氱殑鎿嶄綔
connection.rollback();
}finally{
}
鈼嗏梿鈼嗏梿鈼嗘敞锛涘鏋滃湪鏁版嵁搴撳畾涔夊瓧娈电殑鏃跺�欙紝
瀛楁鍚嶆槸鍏抽敭瀛楃殑鍙互浣跨敤( ` ` ) 鍙嶅紩鍙锋潵杩涜杞箟锛屼綅浜�( ! )宸﹁竟鐨勭鍙�
鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌 锛激锛迹 鈥斺�� 浼樺寲鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��
JDBC浼樺寲锛�
涓轰粈涔堣鏈夛紵
鍥犱负Java绋嬪簭鏄�氳繃JDBC瑙勮寖鏉ヨ繛鎺ュ埌鏁版嵁搴撶殑浠庤�岃揪鍒版搷浣滄暟鎹簱鐨勭洰鐨�
鑰屽湪姣忎竴娆¤繛鎺ユ暟鎹簱鐨勬椂鍊欓兘瑕佽�楄垂澶ч噺鐨勬椂闂翠互鍙婂ぇ閲忕殑鏁版嵁搴撹祫婧愶紝
鍥犱负鐢ㄦ埛姣忎竴娆¤繛鎺ユ暟鎹簱锛屾暟鎹簱閮借鍒嗛厤璧勬簮涓鸿繖涓敤鎴峰垱寤鸿繛鎺ワ紝
褰撶敤鎴峰叧闂繛鎺ョ殑鏃跺�欙紝鏁版嵁搴撹繕瑕佷负杩欎釜鍏抽棴鑰楄垂璧勬簮锛岃�屽綋
鐢ㄦ埛鍐嶆杩炴帴鍒版暟鎹簱鐨勬椂鍊欙紝鍙堣鍦ㄦ鍒涘缓杩炴帴锛�
+<----------------------鈼嗏梿鈼嗏梿鈼嗏梿鍛ㄨ�屽濮嬬殑鍒涘缓鍜屽叧闂�傘�傘�傘�傘�傘�傘��
|
聽 聽 聽 +-----> 瑙e喅锛涘彲浠ラ�氳繃杩炴帴姹犵殑姒傚康鏉ヨВ鍐宠繖涓棶棰樸�傘�傘�傘�傘�傘��
鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌 锛激锛迹 鈥斺�� 鏁版嵁搴撹繛鎺ユ睜鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��
鏁版嵁搴撹繛鎺ユ睜锛�
聽 聽涓轰粈涔堣鏈夛紵
聽 聽 鍥犱负姣忓綋鏁版嵁搴撹涓烘瘡涓�涓繛鎺ラ兘瑕佷笉鏂殑鍒涘缓鏂扮殑杩炴帴锛屼細鑰楄垂澶ч噺鐨勮祫婧愩��
聽 聽 鈼嗕粠鑰屼娇寰楃敤鎴蜂綋楠屽樊锛岃�屼笖寰堝鏄撲娇寰楁暟鎹簱鍑虹幇鍐呭瓨婧㈠嚭绛夈�傘�傘��
聽 聽鏄粈涔堬紵
聽 聽 鏁版嵁搴撹繛鎺ユ睜灏辨槸宸茬粡鍒涘缓濂戒笌鏁版嵁搴撲箣闂寸殑杩炴帴鐨勶紝
聽 聽 骞朵笖杩欎釜杩炴帴鐨勪釜鏁帮紝鏃堕棿绛�......鐢ㄦ埛鍙互鑷繁鎸囧畾銆�
聽 聽浣滅敤锛�
聽 聽 1.浣垮緱杩炴帴鐨勬晥鐜囨彁楂�
聽 聽 2.瀵规暟鎹簱鐨劼仿疯繍琛屄仿疯祫婧愪繚鎶ゆ洿濂戒簡
聽 聽 3.浣垮緱鏁版嵁搴撴洿鍔犲畨鍏�
聽 聽 4.鐢ㄦ埛浣撻獙濂�
聽 聽鐗圭偣锛�
聽 聽 1.姣忎竴涓巶鍟嗙殑杩炴帴姹犲彲鑳介兘鏄嚜宸卞疄鐜扮殑锛屼粠鑰屼笉涓�鏍�
聽 聽 2.濡傛灉鎯宠Java绋嬪簭鍙互浣跨敤锛岄偅涔堝繀椤昏瀹炵幇javax.sql.DataSource鎺ュ彛
聽 聽鈼嗏梿鈼嗏梿鈼嗘敞锛涙暟鎹簱杩炴帴姹犲鏋滄兂瑕佽Java绋嬪簭浣跨敤閭d箞蹇呴』瑕佸疄鐜癹avax.sql.DataSource鎺ュ彛
聽 聽鈼嗏梿閲嶁梿鈼嗘敞锛汢/S缁撴瀯寮�鍙戠殑鏁版嵁搴撹繛鎺ユ睜鏄綅浜幝仿仿锋湇鍔″櫒绔仿仿风殑锛岃�屼笉鏄鎴风鐨勩��
---------------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹 鈥斺�� 鏁版嵁搴撹繛鎺ユ睜鍘熺悊鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫�-------------------------------------------
鏁版嵁搴撹繛鎺ユ睜鍘熺悊锛�
聽1.鏁版嵁搴撲細鍦ㄥ唴瀛樹腑浼氭彁鍓嶅垱寤哄ソN涓繛鎺ワ紝瀛樻斁鍦ㄤ竴涓鍣ㄤ腑(闆嗗悎)
聽2.鐢ㄦ埛璁块棶鏈嶅姟鍣ㄦ暟鎹簱璧勬簮鐨勬椂鍊欙紝
聽 鏁版嵁搴撲細浠庡唴瀛樹腑鍙栧嚭涓�涓繛鎺ュ垎閰嶇粰杩欎釜鐢ㄦ埛
聽3.鑰岃繖涓敤鎴峰垯浼氫竴鐩翠娇鐢ㄨ繖涓繛鎺ヨ闂湇鍔″櫒鏁版嵁搴撹祫婧�
聽4.鐢ㄦ埛鍏抽棴杩炴帴
聽5.鏁版嵁搴撳垯浼氭妸杩欎釜杩炴帴杩涜涓�涓洖鏀舵斁鍥炲埌杩炴帴姹犵殑瀹瑰櫒涓�
----------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹 鈥斺�� 鏁版嵁搴撹繛鎺ユ睜鏋勯�犲熀鏈�濇兂鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫�-------------------------------------------
鏁版嵁搴撹繛鎺ユ睜鏋勯�犲熀鏈�濇兂锛�
聽1.瑕佹湁涓鍣ㄥ瓨鏀捐繖浜涘凡缁忎笌鏁版嵁搴撳垱寤轰簡杩炴帴鐨勫璞�
聽2.鍒濆鍖栧鍣ㄧ殑杩炴帴瀵硅薄涓暟
聽3.鐢ㄦ埛姣忔鍙栭兘鏄粠瀹瑰櫒涓彇鍑虹殑锛屾墍鏈夋瘡娆℃棩鏈熼兘瑕佽繘琛�--
聽4.瓒呰繃浜嗗垵濮嬪寲杩炴帴瀵硅薄涓暟鏄惁闇�瑕佹墿瀹�
聽5.鐢ㄦ埛鍥炴敹鐨勬柟娉�
聽6.杩涜鍥炴敹锛屽瓨鏀惧洖瀹瑰櫒涓�
聽 聽 聽a)瑕佽璁′竴涓�氱敤鐨勫洖鏀舵柟娉曪紝close()
聽 聽 聽i)鍙互閫氳繃闈欐�佸弽灏�
聽 聽 聽ii)鍙互閫氳繃鍔ㄦ�佸弽灏�
------------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹 鈥斺�� 鏁版嵁搴撹繛鎺ユ睜寤虹珛瑕佺礌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫�-------------------------------------------
鏁版嵁搴撹繛鎺ユ睜杩炴帴瑕佺礌锛�
1.鍒濆鍖栬繛鎺ュ弬鏁�
2.杩炴帴姹犲垵濮嬪寲杩炴帴涓暟
3.杩炴帴姹犲垎閰嶈繛鎺ョ殑鏈�澶ц繛鎺ヤ釜鏁奥� 聽 聽(淇濇姢鏁版嵁搴�)
4.绛夊緟杩炴帴姹犲垎閰嶈繛鎺ョ殑鏈�澶х瓑寰呮椂闂�
鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌 锛激锛迹 鈥斺�� 寮�婧愭暟鎹簱杩炴帴姹犫啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��
寮�婧愭暟鎹簱杩炴帴姹狅紱
聽涓轰粈涔堣鏈夛紵
聽 濡傛灉鏁版嵁搴撹繛鎺ユ睜鏄敱java寮�鍙戠▼搴忓憳缂栧啓鐨勪細浣垮緱鏁版嵁搴撹繛鎺ヤ笉瀹夊叏锛�
聽 鍥犱负java寮�鍙戠▼搴忓憳鏄笉浼氭瘡鏃舵瘡鍒荤殑鍘绘洿鏀硅繖涓繛鎺ユ睜鐨勶紝
聽 鑰屽鏋滄槸浣跨敤寮�婧愮粍缁囩殑杩炴帴姹犱細鏇村姞鐨勫畨鍏紝
聽 聽鍥犱负寮�婧愮粍缁囩殑杩炴帴姹犳槸鐢卞紑婧愮粍缁囧紑鍙戠殑
聽 聽 鑰屽紑婧愮粍缁囦細涓嶆柇鐨勪紭鍖栥��
聽鏄粈涔堬紵
聽 鏄竴涓垱寤烘暟鎹簱杩炴帴姹犵殑杈冧负鍙潬涓�涓伐鍏�
聽浣滅敤锛�
聽 1.浣垮緱鏁版嵁搴撶殑杩炴帴鏁堢巼鏇撮珮
聽 2.鏁版嵁搴撴洿鍔犲畨鍏�
聽 3.鐢ㄦ埛浣撻獙鏇村ソ
聽鐗圭偣锛�
聽 1.鎯宠java绋嬪簭浣跨敤锛屽繀椤昏瀹炵幇javax.sql.DataSource鎺ュ彛
聽 2.姣忎竴涓繛鎺ユ睜鍘熺悊閮芥槸绫讳技鐨勶紝鍙笉杩囧疄鐜扮殑鏂规硶鍙兘涓嶄竴鏍�
聽 聽 聽娴佽鐨勫紑婧愯繛鎺ユ睜锛�
1.DBCP ---> Apache寮�鍙戠殑锛屼篃鏄疶omcat浣跨敤杩炴帴姹犵殑缁勪欢
聽 聽--->瀵煎寘锛�
commons-dbcp.jar
commons-pool.jar
2.C3P0 ---> 寮�婧愮粍缁囷紝涔熸槸Hibernate鍜孲pring绛夊湪浣跨敤鐨�
聽 聽--->瀵煎寘锛�
c3p0-0.9.1.2.jar
鈼嗏梿鈼嗏梿鈼嗘敞锛汥BCP鍜孋3P0鐨勫熀鏈尯鍒紱
聽 聽1.C3P0鏈夎嚜鍔ㄥ洖鏀剁┖闂茶繛鎺ュ姛鑳�
聽 聽 聽 聽2.DBCP娌℃湁鑷姩鍥炴敹绌洪棽杩炴帴鍔熻兘
-----------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹 鈥斺�� 锛わ饥锛o及杩炴帴姹犲熀鏈垱寤衡啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌-------------------------------------------
DBCP杩炴帴姹犲熀鏈垱寤猴紱
鏂瑰紡涓�锛涚洿鎺ヨ缃弬鏁� 聽---> 纭紪鐮�
聽 聽 聽 1.瀵煎寘锛� 聽 聽 聽 聽 聽 聽 聽 聽 ---> 闇�瑕佸鍏�2涓寘
commons-dbcp.jar
commons-pool.jar
聽 聽 聽 2.鍒涘缓DBCP鏋跺寘涓嬬殑瀹炵幇浜咲ataSource杩炴帴姹犳帴鍙g殑BasicDataSource瀵硅薄
BasicDataSourcebds = new BasicDataSource();
聽 聽 聽 3.璁剧疆鏁版嵁搴撹繛鎺ュ熀鏈睘鎬�
聽 聽 聽 聽a)鏁版嵁搴撳熀鏈繛鎺ュ弬鏁帮紱
bds.setDriverClassName("xxx");
bds.setUrl("xxx");
bds.setUsername("xxx");
bds.setPassword("xxx");
聽 聽 聽 聽b)璁剧疆杩炴帴姹犻儴鍒嗗熀鏈睘鎬�
聽bds.setInitialSize(number); ---> 鍒濆鍖栫殑涓暟
聽bds.setMaxActive(number); 聽 ---> 杩炴帴姹犳渶澶ц繛鎺ヤ釜鏁�
聽bds.setMaxWait((long)[S]); 聽---> 鏈�澶х瓑寰呮椂闂�
聽 聽 聽 4.閫氳繃BasicDataSource鐨勬柟娉曡繑鍥炰竴涓狢onnection杩炴帴鏁版嵁搴撴帴鍙e璞�
bds.getConnection();
聽 聽 聽 5.鍥炴敹杩炴帴
bds.close();
聽 聽 聽 6.鍏抽棴杩炴帴 聽 ---> 鏈�濂借嚜瀹氫箟鍏抽棴杩炴帴鐨勬柟娉�
聽 聽 聽 聽 聽銆傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘��
鏂瑰紡浜岋紱閫氳繃鍔犺浇properties閰嶇疆鏂囦欢
1.鍒涘缓涓�涓獂x.properties鏂囦欢
銆傘�傘�傘�傘�傘��
聽 聽鈼嗘敞锛涘湪properties鏂囦欢涓�#鏄敞閲�
2.鍦╬roperties鏂囦欢涓畾涔夎繛鎺ユ暟鎹簱鍙傛暟
聽 聽a)鏁版嵁搴撹繛鎺ュ熀鏈弬鏁�
driverClassName=xxx
url=xxx
username=xxx
password=xxx
聽 聽b)鏁版嵁搴撹繛鎺ユ睜閮ㄥ垎鍩烘湰灞炴��
聽 聽 initialSize(number); 聽
---> 鍒濆鍖栬繛鎺ヤ釜鏁�
聽 聽 maxActive(number); 聽
聽 ---> 鏈�澶ц繛鎺ヤ釜鏁�
聽 聽 maxWait((long)[s]); 聽
聽---> 鏈�澶х瓑寰呮椂闂�
4.鍒涘缓涓�涓猵roperties绫诲璞�
Properties pro = new Properties();
5.鍔犺浇properties鏂囦欢
pro.load(绫�.class.getResourceAsStream("/褰撳墠璺緞properties鏂囦欢"));
3.鍒涘缓涓�涓狟asicDataSource宸ュ巶绫诲璞asicDataSourceFatory瀵硅薄锛�
鍦ㄨ皟鐢╟reateDataSource(Properties)鐨勬柟娉曚紶鍏ヤ竴涓狿roperties鐨勫璞�
DataSource ds = newBasicDataSourceFactory().createDataSource(pro);
-----------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹 鈥斺�� 锛o紦锛帮紣杩炴帴姹犲熀鏈垱寤衡啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌-------------------------------------------
C3P0杩炴帴姹犲熀鏈垱寤猴紱
鏂瑰紡涓�锛涚洿鎺ヨ缃弬鏁� ---> 纭紪鐮�
聽 聽 1.瀵煎寘
---> c3p0-0.9.1.2.jar
聽 聽 2.鍒涘缓C3P0鏋跺寘涓嬬殑瀹炵幇浜咲ataSource杩炴帴姹犳帴鍙g殑ComboPooledDataSource瀵硅薄
CombolPooledDataSource cpds = newComboPooledDataSource()
聽 3.璋冪敤鏂规硶璁剧疆杩炴帴姹犲弬鏁�
聽 聽 a)杩炴帴鏁版嵁搴撳熀鏈弬鏁�
cpds.setDriverClass(xxx);
cpds.setJdbcUrl(xxx);
cpds.setUser(xxx);
cpds.setPassword(xxx);
聽 聽 b)璁剧疆杩炴帴姹犵殑閮ㄥ垎鍩烘湰灞炴��
聽cpds.setInitialPoolSize(number); 聽---> 杩炴帴姹犵殑鍒濆鍖栬繛鎺ヤ釜鏁�
聽cpds.setMaxPoolSize(number); 聽 聽 聽---> 杩炴帴姹犵殑鏈�澶ц繛鎺ヤ釜鏁�
聽cpds.setCheckoutTimeout(number); 聽---> 鑾峰彇杩炴帴姹犺繛鎺ョ殑
聽 聽 聽鏈�澶х瓑寰呮椂闂�
聽 聽 4.璋冪敤鏂规硶鑾峰彇鍒拌繛鎺ユ睜鐨凜onnction瀵硅薄
cpds.getConnection();
聽 聽 5.鍥炴敹杩炴帴
cpds.close();
聽 聽 6.鍏抽棴杩炴帴 ---> 寤鸿鑷繁鍐欎竴涓叧闂殑鏂规硶
cpds.close();
鏂瑰紡浜岋紱閫氳繃C3P0瀹氫箟鐨剎ml鏂囦欢鍔犺浇鍒濆鍖栧弬鏁�
1.鍒涘缓涓�涓湪褰撳墠璺緞涓嬬殑鍚嶄负锛涖�恈3p0-config.xml 銆� 鏂囦欢
銆傘�傘�傘�傘�傘�傘�傘��
a)鍦ㄨ繖涓猉ML鏂囦欢涓缃垵濮嬪寲淇℃伅
//杩炴帴鏁版嵁搴撳熀鏈俊鎭�
xxx
xxx
xxx
xxx
//杩炴帴姹犲熀鏈俊鎭�
number
number
number
銆傘�傘�傘�傘�傘��
聽 璇存槑锛�
聽 聽 聽 聽
聽 聽 聽 聽-=-褰撴湁澶氫釜杩炴帴姹犵殑鏃跺�欙紝
聽 聽 聽 聽聽 聽鐢ㄦ埛娌℃湁鎸囧畾杩炴帴姹犵殑瑕�
聽 聽 聽 聽聽 聽浣跨敤鐨勫睘鎬�
聽 聽 聽 聽聽 聽鍒欎細榛樿浣跨敤
聽 聽 聽 聽聽 聽鏍囩涓缃殑灞炴��
聽 聽 聽 聽 name="">褰撴湁澶氫釜杩炴帴姹犵殑鏃跺�� 聽 聽 聽 聽鍙互鎸囧畾杩炴帴姹犵殑鍦ㄦ枃浠朵腑鐨勯厤缃睘鎬� 聽 淇℃伅锛岄�氳繃name灞炴�ф潵鎸囨槑銆� 聽 聽 聽 聽 name="灞炴�у悕">鏄缃繛鎺ユ睜鐨勫睘鎬у拰鍊� 聽 聽 鈼嗘敞锛� 2.鍒涘缓C3P0鏋跺寘涓嬪疄鐜癉ataSource杩炴帴姹犳帴鍙g殑ComboPooledDataSource瀵硅薄 ComboPooledDataSource cpds = new ComboPooledDataSource(鍙啓/涓嶅啓); 聽 聽鈼嗏梿鈼嗏梿鈼嗘敞锛涘湪鍚姩鐨勬椂鍊欎細鑷姩 聽 聽鍦仿仿峰綋鍓嶇殑璺緞路路路涓嬫悳绱㈠悕 聽 聽涓篶3p0-config.xml鏂囦欢 聽 聽骞朵笖鍔犺浇杩欎釜鏂囦欢鐨勮缃殑杩炴帴姹犲睘鎬� 聽 聽鑰屽鏋滃湪鍒涘缓杩欎釜瀵硅薄鐨勬椂鍊欏湪褰㈠弬涓� 聽 聽路路路鍐欏叆路路路c3p0-config.xml鏂囦欢涓嬬殑 聽 聽 聽 聽鍒欎細榛樿浣跨敤杩欎釜鏍囩涓嬭缃殑灞炴�с�� 聽 聽鑰屽鏋滄病鏈夊啓鍒欓粯璁や娇鐢� 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌 锛激锛迹 鈥斺�� 鍏冩暟鎹啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� JDBC甯哥敤鐨勫厓鏁版嵁锛� 涓轰粈涔堣鏈夛紵 聽 鏈変簡鍏冩暟鎹彲浠ュ氨閫氳繃鑾峰彇鍒颁竴浜涘弬鏁帮紝 聽 閫氳繃鑾峰彇鍒扮殑鍙傛暟璁剧疆鏌愪簺鍊肩瓑銆傘�傘�� 鏄粈涔堬紵 JDBC鍏冩暟鎹氨鏄竴浜涚被 浣滅敤锛� 聽 聽 涓轰簡鍐欏嚭鏇村姞閫氱敤鐨勪唬鐮� 鐗圭偣锛� 聽 聽 聽1.閮芥槸涓轰簡鍐欏嚭鏇村姞閫氱敤鐨勪唬鐮佽�屽瓨鍦ㄧ殑 聽 聽 聽2.鍩烘湰閮芥槸涓�浜涙帴鍙� ----------------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫擄吉锛わ饥锛� 鈥斺�� 甯哥敤鐨勫厓鏁版嵁鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫�------------------------------------------- JDBC甯哥敤鐨勫厓鏁版嵁锛� 1.鏁版嵁搴撳厓鏁版嵁锛� ---> 鑾峰彇鏁版嵁搴撶殑鍩烘湰淇℃伅 聽 濡傦紱鏁版嵁搴撳悕绉�---> getDatabaseProductName() 聽 聽 聽 鏁版嵁搴撶増鏈�---> getDatabaseVersion(); 聽 聽 聽 鏁版嵁搴撳搴旂殑椹卞姩---> getDriverName(); 聽 聽 銆傘�傘�傘�傘�傘�� ---> 聽Connection鑾峰彇DatabaseMetaData鎺ュ彛瀵硅薄 2.鍙傛暟鍏冩暟鎹紱 ---> 鑾峰彇鏁版嵁搴撶殑鍙傛暟淇℃伅 聽 濡傦紱鍙傛暟鍚� 聽 聽 聽 鍙傛暟涓暟---> getParamterCount(); 聽 聽 聽 鍙傛暟绫诲瀷---> ...... ---> 涓�鑸敤浜庡湪棰勫畾涔夎祴鍊肩敤鐨勶紝 鍥犱负鍦ㄨ皟鐢ㄨ繖涓帴鍙g殑getParameterCount()鏂规硶鐨勬椂鍊欙紝 聽鏄牴鎹缂栬瘧璇彞鐨勯缂栬瘧鍊肩鍙锋潵瀹氫箟棰勭紪璇戠殑璇彞鐨勫�笺�� ---> PreparedStatement鑾峰彇ParameterMetaData鎺ュ彛瀵硅薄 3.缁撴灉闆嗗厓鏁版嵁锛� ---> 鑾峰彇鍒扮粨鏋滈泦鐨勪俊鎭� 聽 聽濡傦紱瀛楁鍚�---> getColumnName(number); 聽 聽 聽 聽瀛楁鏁伴噺---> getColumnCount(); 聽 聽 聽 聽瀛楁绫诲瀷---> getColumnTyle(number); ---> 涓�鑸娇鐢ㄥ湪鑾峰彇鍒扮殑缁撴灉闆嗚凯浠g殑鏃跺�欒幏鍙栧埌涓嶇‘瀹氱殑鍊� ---> ResultSet鑾峰彇ResultSetMetaData鎺ュ彛瀵硅薄 鈼嗏梿鈼嗏梿鈼嗘敞锛涘洜涓哄厓鏁版嵁鑾峰彇鍒扮殑瀹炵幇鏄敱鏁版嵁搴撻┍鍔ㄥ疄鐜扮殑锛� 聽 鑰岃繖浜涙柟娉曟槸鍚﹀彲鐢紝鏄惁涓庨鐭ョ殑鐢ㄦ硶涓�鏍锋槸鐪嬪疄鐜扮殑銆� 聽 聽 聽铏界劧杩炴帴鏁版嵁搴撴帴鍙�/鏍囧噯鏄敱SUN鍏徃瑙勫畾鐨勶紝 聽 聽 聽 浣嗘槸鍏蜂綋鐨勫疄鐜版槸鐢辨暟鎹簱鍘傚晢瀹炵幇鐨勶紝 聽 聽 聽 鈼嗏梿鎵�浠ュ綋閫氳繃鏂规硶鑾峰彇鍒扮殑鍜岄鐭ョ粨鏋� 聽 聽 聽 鈼嗏梿涓嶄竴鏍风殑鏃跺�欒鏌ヨ祫鏂欍�� 聽鈼嗏梿鈼嗘渚嬶紱閫氳繃鍏冩暟鎹彲浠ュ埗浣滈�氳繃鐨勬暟鎹簱DDL/DML璇彞鐨勬柟娉曞拰DQL璇彞鐨勬柟娉� 鍦ㄥ仛DQL杩斿洖鐨勬暟鎹殑鏃跺�欐渶濂藉皝瑁呮垚涓�涓猨avaBean瀵硅薄锛� 鑰岃繖涓皝瑁呭彲浠ラ�氳繃鍙嶅皠锛屾毚鍔涘弽灏勭瓑鑾峰彇銆� 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌 锛激锛迹 鈥斺�� 锛わ饥锛碉綌锝夛綄妗嗘灦鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� JDBC-DBUtil锛� 聽 涓轰粈涔堣鏈夛紵 聽 鍥犱负甯哥敤鐨勬柟娉曞鏋滄瘡娆¢兘瑕侀噸鏂板啓鐨勮瘽锛� 聽 閭d箞浼氫娇寰楀紑鍙戞晥鐜囦綆涓嬨�� 聽 鏄粈涔堬紵 聽 聽DBUtil鏄敱Apache寮�婧愮粍缁囧JDBC杩涜绠�鍗曞皝瑁呯殑涓�涓伐鍏风被 聽 浣滅敤锛� 聽 鍙互绠�鍖朖DBC绋嬪簭鐨勫紑鍙戯紝 聽 鑰屼笉浼氬奖鍝嶅埌绋嬪簭鐨勬�ц兘銆� 聽 鐗圭偣锛� 聽 聽 聽 聽閲岄潰灏佽鐨勯兘鏄柟娉� 聽 聽 聽 聽 杩欎簺鏂规硶閮芥槸JDBC甯哥敤鐨勬柟娉� -------------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹 鈥斺�� 锛わ饥锛碉綌锝夛綄浣跨敤杩囩▼鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫�------------------------------------------- DBUtil浣跨敤杩囩▼锛� 1.鍒涘缓涓荤被QueryRunner瀵硅薄锛� 浼犲叆涓�涓狣ataSource杩炴帴姹犳帴鍙e璞★紝 閫氳繃杩炴帴姹犳帴鍙e璞″拰鏁版嵁搴撹繘琛屼竴涓繛鎺ャ�� QueryRunner qr = new QrueryRunner(newComboPooledDataSource()); 2.璋冪敤鎵цDDL/DML鏁版嵁搴撹鍙ユ柟娉� qr.update(String sql,Object...parame); 3.璋冪敤鎵цDQL鏁版嵁搴撹鍙ユ柟娉� Object qr.query(String sql,ResultSetHandlerrsh,Object...parame); --------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹 鈥斺�� 锛わ饥锛碉綌锝夛綄锛縍esultSetHandler绫烩啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌------------------------------------------- DBUtil甯哥敤绫伙紱 聽 聽 1.QueryRunner ---> 鏄疍BUtil涓嬬殑涓荤被鈼� 聽 聽 鈻睷esultSetHandler鎺ュ彛锛屽皢缁撴灉闆嗗皝瑁呮垚涓嶅悓鐨勫璞°�� 鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌 聽 聽 2.BeanHandler ---> 鏄敤浜庡皢鏁版嵁灏佽鎴愪竴涓璞★紝 聽 聽 鑰岃繖涓璞$殑灞炴�仿仿峰繀椤宦仿仿疯 聽 聽 鈼嗗拰瑕佸皝瑁呯殑瀛楁路路鈼嗕釜鏁拌涓�鏍� 聽 聽 ---> 杩斿洖鐨勬槸杩欎釜浼犲叆鐨勫璞� 聽 聽 浠g爜锛� 聽 聽 绫� = query(String sql,new BeanHandler(绫�.class),Object...param); 聽 聽 3.BeanListHandler ---> 鏄敤浜庡皢澶氫釜鏁版嵁灏佽涓�涓釜鐨勫璞★紝 聽 聽 骞朵笖灏嗚繖涓涓璞″瓨鏀惧埌闆嗗悎涓� 聽 聽 鑰岃繖涓璞$殑灞炴�仿仿峰繀椤昏 聽 聽 鍜岃灏佽鐨勫瓧娈德仿封梿涓暟涓�鏍枫�� 聽 聽 聽 ---> 杩斿洖鐨勬槸杩欎釜浼犲叆鐨勫璞$殑List闆嗗悎 浠g爜锛� List<绫�> = query(String sql,new BeanListHandler(绫�.class),Object...param); 聽 聽 4.ArrayHandler ---> 鏄敤浜庡皢鏁版嵁灏佽鎴愪竴涓璞� 聽 聽 鑰岃繖涓璞$殑灞炴�у彲浠ュ拰瑕� 聽 聽 灏佽鐨勫瓧娈电殑涓暟路路鈼嗕笉涓�鏍� 聽 聽 聽 聽---> 杩斿洖鐨勬槸涓�涓狾bject[]鏁扮粍 聽 聽 浠g爜锛� Object[] = query(Stringsql,new ArrayHandler(),Object...param); 聽 聽 5.ArrayListHandler ---> 鏄敤浜庡皢澶氫釜鏁版嵁灏佽鎴愬涓璞� 聽 聽 骞朵笖灏嗚繖澶氫釜瀵硅薄瀛樻斁鍒伴泦鍚堜腑 聽 聽 鑰岃繖涓璞$殑灞炴�у彲浠ュ拰瑕� 聽 聽 鐨勫瓧娈电殑涓暟路路鈼嗕笉涓�鏍� 聽 聽 聽 聽---> 杩斿洖鐨勬槸Object[]鏁扮粍绫诲瀷鐨勪竴涓狶ist闆嗗悎 聽 聽 浠g爜锛� List(Object[]) = query(Stringsql,new ArrayListHandler(),Object...param); 聽 聽 6.ScalarHanderl ---> 鏄敤浜庡鐞嗚仛鍚堟煡璇㈣鍙ョ殑(count(*),min(*)......) 聽 聽 聽 聽---> 杩斿洖鐨勬槸涓�涓狾bject鍙互杞崲鎴愬搴旂殑鍖呰绫� 浠g爜锛� Object number 聽= query(String sql,newScalarHandler(),Object...param); ------------------------------鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹 鈥斺�� 锛わ饥锛碉綌锝夛綄涔嬩簨鍔♀啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌------------------------------------------- DBUtil浜嬪姟锛� 聽 聽鍦ㄤ娇鐢―BUtil宸ュ叿绫荤殑鏃跺�欙紝 聽 聽 濡傛灉瑕佷娇鐢ㄤ簨鍔″垯鍦ㄥ垱寤篞ueryRunner瀵硅薄鐨勬椂鍊欎笉鐢ㄤ紶鍙傦紝 聽 聽 鑰屾槸鍦ㄨ皟鐢ㄦ柟娉曠殑鏃跺�欙紝浼犲叆涓�涓狢onnection瀵硅薄銆� 聽 聽 聽浠g爜锛� 聽 聽 聽 聽 聽1.鍒涘缓涓�涓棤鍙俀ueryRunner瀵硅薄 QueryRunner qr = new QueryRunner(); 聽 聽 聽 聽 聽2.鑾峰彇鍒颁竴涓狢onnection杩炴帴鏁版嵁搴撴帴鍙e璞� a) Connection connection = newCombolPooledDataSource().getConnection(); b) Connection connection = new BasicDataSourceFactory(). createDataSource(Properties). getConenction(); 聽 聽3.寮�鍚簨鍔″鐞� connection.setAutoCommit(false); 聽 聽 聽 聽 聽4.璋冪敤鎵цDDL/DML璇彞鐨勬柟娉曪紝浼犲叆涓�涓狢onnection瀵硅薄涓庢暟鎹簱寤虹珛杩炴帴 qr.update(connection,String sql_1,Obejct...param); qr.update(connection,String sql_2,Object...param); 聽 聽 聽 聽 聽5.鎻愪氦浜嬪姟 connection.commit; 聽 聽 聽 聽 聽6.浜嬪姟鍥炴粴(鍑虹幇寮傚父) connection.rollback; 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌 锛激锛迹 鈥斺�� 鍒嗛〉鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� 鍒嗛〉璁捐鐨勫叧閿紱 灏嗘暣涓垎椤电殑鏁版嵁璁捐鎴愪竴涓猨avaBean; private List private int pageFrist; // 棣栭〉 private int perviousPage; // 涓婁竴椤� private int nextPage; // 涓嬩竴椤� private int lastPage; // 灏鹃〉 / 鎬婚〉鏁� private int curPage; // 褰撳墠椤� private int countRecord; // 鎬昏褰曟暟 private int curRecord; // 褰撳墠椤甸潰鏁版嵁搴撴潯鏁� 杩樻湁鐩稿叧鐨勭畻娉曪紱 1.璁剧疆棣栭〉 2.璁剧疆涓婁竴椤碉紝褰撳墠椤垫槸鍚︽槸棣栭〉锛屽鏋滄槸棣栭〉鍒欎负1锛� 濡傛灉涓嶆槸涓洪椤靛垯褰撳墠椤�-1 3.璁剧疆涓嬩竴椤碉紝褰撳墠椤垫槸鍚︽湭鏈〉锛屽鏋滀笉涓烘湯椤靛垯褰撳墠椤�+1 4.灏鹃〉/鎬婚〉鏁帮紱鎬昏褰曟潯鏁�%姣忛〉鏉℃暟==0 绛変簬鐨勮瘽鍒欐�昏褰曟暟/姣忛〉鏉℃暟 : 鎬昏褰曟暟/姣忛〉鏉℃暟+1 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌 锛激锛迹 鈥斺�� 鍩烘湰瀛︿範杩囩▼鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� ---> JDBC鍩烘湰寮�鍙�(鍙戦�丼QL璇彞)(S/P/C) ---> 娉ㄥ唽椹卞姩銆丆onnection銆乸reparedStatiment銆乧allableStatement ---> 鍥犱负鍩烘湰寮�鍙戞瘡娆″彂閫丼QL璇彞鎱� ---> 鎵瑰鐞�(addBatch/executeBatch/clearBatch) ---> 浣嗘槸鍦ㄥ彂閫丏DL/DML璇彞鐨勬椂鍊欎笉鐭ラ亾涓婚敭鐨勮嚜澧為暱鐨勫�� ---> 鑾峰彇鑷闀跨殑鍊�(statement_GENERIC_KEYS) ---> 鍥犱负鏈変竴浜涙枃浠跺彲鑳芥瘮杈冩満瀵嗚瀛樻斁鍒版暟鎹簱 ---> 鏂囦欢瀛樺彇(text/clob/mediumnclob,blob/mediumnblob) ---> 鏈夊啓涓氬姟瑕佹眰杈惧埌鍚屾鎬�---> 浜嬪姟澶勭悊 ---> 姣忎竴娆¢兘瑕佷笌鏁版嵁搴撹繘琛岃繛鎺ュ鏁版嵁搴撲笉濂斤紝瀵圭敤鎴蜂綋楠屼篃涓嶅ソ ---> 杩炴帴姹�(DBCP/C3P0) ---> 涓轰簡鍙互鍐欏嚭鏇村姞閫氱敤鐨勪唬鐮�(瀛楁涓嶅彲棰勭煡涓暟绛�.....) ---> 甯哥敤涓夌鍏冩暟鎹� ---> 鍥犱负鏈変竴浜汮DBC鐨勪唬鐮佸疄鍦ㄦ槸澶父鐢ㄤ簡 ---> JDBCUtil妗嗘灦 灏忕粨锛涜秺鏉ョ畝鍗曪紝瓒婃潵瓒婇�氱敤銆傘�傘�傘�傘�傘��