JDBC璇﹁В

鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫� 锛激锛迹鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻�


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鏂囦欢涓嬬殑

聽 聽鏍囩鐨刵ame灞炴�у�硷紝

聽 聽鍒欎細榛樿浣跨敤杩欎釜鏍囩涓嬭缃殑灞炴�с��

聽 聽鑰屽鏋滄病鏈夊啓鍒欓粯璁や娇鐢�鏍囩涓嬬殑璁剧疆鐨勫睘鎬�


鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌 锛激锛迹 鈥斺�� 鍏冩暟鎹啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��


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 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妗嗘灦


灏忕粨锛涜秺鏉ョ畝鍗曪紝瓒婃潵瓒婇�氱敤銆傘�傘�傘�傘�傘��

你可能感兴趣的:(JDBC璇﹁В)