锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产精品成人久久蜜臀,亚洲乱码无码永久不卡在线 ,精品亚洲成α人无码成α在线观看http://www.tkk7.com/liaojiyong/category/11448.htmlzh-cnFri, 23 Mar 2007 14:09:36 GMTFri, 23 Mar 2007 14:09:36 GMT60Java jdbc鏁版嵁搴撹繛鎺ユ睜鎬葷粨錛堣漿錛?/title><link>http://www.tkk7.com/liaojiyong/archive/2007/03/23/105715.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Fri, 23 Mar 2007 01:33:00 GMT</pubDate><guid>http://www.tkk7.com/liaojiyong/archive/2007/03/23/105715.html</guid><wfw:comment>http://www.tkk7.com/liaojiyong/comments/105715.html</wfw:comment><comments>http://www.tkk7.com/liaojiyong/archive/2007/03/23/105715.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/liaojiyong/comments/commentRss/105715.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/liaojiyong/services/trackbacks/105715.html</trackback:ping><description><![CDATA[1. 寮曡█ <p>銆銆榪戝勾鏉ワ紝闅忕潃Internet/Intranet寤虹綉鎶鏈殑椋為熷彂灞曞拰鍦ㄤ笘鐣岃寖鍥村唴鐨勮繀閫熸櫘鍙婏紝璁$畻鏈?/p><p>銆銆搴旂敤紼嬪簭宸蹭粠浼犵粺鐨勬闈㈠簲鐢ㄨ漿鍒癢eb搴旂敤銆傚熀浜嶣/S錛圔rowser/Server錛夋灦鏋勭殑3灞傚紑鍙戞ā寮忛愭笎鍙栦唬C/S錛圕lient/Server錛夋灦鏋勭殑寮鍙戞ā寮忥紝鎴愪負寮鍙戜紒涓氱駭搴旂敤鍜岀數瀛愬晢鍔℃櫘閬嶉噰鐢ㄧ殑鎶鏈傚湪Web搴旂敤寮鍙戠殑鏃╂湡錛屼富瑕佷嬌鐢ㄧ殑鎶鏈槸<a target="_blank"><font color="#3080cb">CGI</font></a>錒?a target="_blank"><font color="#3080cb">ASP</font></a>錒?a target="_blank"><font color="#3080cb">PHP</font></a>絳夈備箣鍚庯紝Sun鍏徃鎺ㄥ嚭浜嗗熀浜?a target="_blank"><font color="#3080cb">Java</font></a>璇█鐨凷ervlet+Jsp+JavaBean鎶鏈傜浉姣斾紶緇熺殑寮鍙戞妧鏈紝瀹冨叿鏈夎法騫沖彴錒?a target="_blank"><font color="#3080cb">瀹夊叏</font></a>錒戞湁鏁堬箲鍙Щ妞嶇瓑鐗規э紝榪欎嬌鍏舵洿渚夸簬浣跨敤鍜屽紑鍙戙?/p><p>銆銆Java搴旂敤紼嬪簭璁塊棶<a target="_blank"><font color="#3080cb">鏁版嵁搴?/font></a>鐨勫熀鏈師鐞?/p><p>銆銆鍦↗ava璇█涓紝JDBC錛圝ava DataBase Connection錛夋槸搴旂敤紼嬪簭涓庢暟鎹簱娌熼氱殑妗ユ,</p><p>銆銆鍗矹ava璇█閫氳繃JDBC鎶鏈闂暟鎹簱銆侸DBC鏄竴縐嶁滃紑鏀鋸濈殑鏂規錛屽畠涓烘暟鎹簱搴旂敤寮鍙戜漢鍛橈箲鏁版嵁搴撳墠鍙板伐鍏峰紑鍙戜漢鍛樻彁渚涗簡涓縐嶆爣鍑嗙殑搴旂敤紼嬪簭<a target="_blank"><font color="#3080cb">璁捐</font></a>鎺ュ彛錛屼嬌寮鍙戜漢鍛樺彲浠ョ敤綰疛ava璇█緙栧啓瀹屾暣鐨勬暟鎹簱搴旂敤紼嬪簭銆侸DBC鎻愪緵涓ょAPI錛屽垎鍒槸闈㈠悜寮鍙戜漢鍛樼殑API鍜岄潰鍚戝簳灞傜殑JDBC椹卞姩紼嬪簭API錛屽簳灞備富瑕侀氳繃鐩存帴鐨凧DBC椹卞姩鍜孞DBC-ODBC妗ラ┍鍔ㄥ疄鐜頒笌鏁版嵁搴撶殑榪炴帴銆?/p><p>銆銆涓鑸潵璇達紝Java搴旂敤紼嬪簭璁塊棶鏁版嵁搴撶殑榪囩▼錛堝鍥?鎵紺猴級鏄細</p><p>銆銆鈶犺杞芥暟鎹簱椹卞姩紼嬪簭錛?/p><p>銆銆鈶¢氳繃JDBC寤虹珛鏁版嵁搴撹繛鎺ワ紱</p><p>銆銆鈶㈣闂暟鎹簱錛屾墽琛孲QL璇彞錛?/p><p>銆銆鈶f柇寮鏁版嵁搴撹繛鎺ャ?/p><div align="center"><img src="http://web.rdxx.com/Files/Pic/Img/JSP_Skill/0682916281387862.gif" border="0" /><br />鍥? Java鏁版嵁搴撹闂満鍒?/div><div align="left">銆銆JDBC浣滀負涓縐嶆暟鎹簱璁塊棶鎶鏈紝鍏鋒湁綆鍗曟槗鐢ㄧ殑浼樼偣銆備絾浣跨敤榪欑妯″紡榪涜Web搴旂敤</div><div align="left">銆銆紼嬪簭寮鍙戯紝瀛樺湪寰堝闂錛氶鍏堬紝姣忎竴嬈eb璇鋒眰閮借寤虹珛涓嬈℃暟鎹簱榪炴帴銆傚緩绔嬭繛鎺ユ槸涓涓垂鏃剁殑媧誨姩錛屾瘡嬈¢兘寰楄姳璐?.05s锝?s鐨勬椂闂達紝鑰屼笖緋葷粺榪樿鍒嗛厤鍐呭瓨璧勬簮銆傝繖涓椂闂村浜庝竴嬈℃垨鍑犳鏁版嵁搴撴搷浣滐紝鎴栬鎰熻涓嶅嚭緋葷粺鏈夊澶х殑寮閿銆傚彲鏄浜庣幇鍦ㄧ殑Web搴旂敤錛屽挨鍏舵槸澶у瀷鐢靛瓙鍟嗗姟<a target="_blank"><font color="#3080cb">緗戠珯</font></a>錛屽悓鏃舵湁鍑犵櫨浜虹敋鑷沖嚑鍗冧漢鍦ㄧ嚎鏄緢姝e父鐨勪簨銆傚湪榪欑鎯呭喌涓嬶紝棰戠箒鐨勮繘琛屾暟鎹簱榪炴帴鎿嶄綔鍔垮繀鍗犵敤寰堝鐨勭郴緇熻祫婧愶紝緗戠珯鐨勫搷搴旈熷害蹇呭畾涓嬮檷錛屼弗閲嶇殑鐢氳嚦浼氶犳垚鏈嶅姟鍣ㄧ殑宕╂簝銆備笉鏄嵄璦鑰稿惉錛岃繖灝辨槸鍒剁害鏌愪簺鐢靛瓙鍟嗗姟緗戠珯鍙戝睍鐨勬妧鏈摱棰堥棶棰樸傚叾嬈★紝瀵逛簬姣忎竴嬈℃暟鎹簱榪炴帴錛屼嬌鐢ㄥ畬鍚庨兘寰楁柇寮銆傚惁鍒欙紝濡傛灉紼嬪簭鍑虹幇寮傚父鑰屾湭鑳藉叧闂紝灝嗕細瀵艱嚧鏁版嵁搴撶郴緇熶腑鐨勫唴瀛樻硠婕忥紝鏈緇堝皢涓嶅緱涓嶉噸鍚暟鎹簱銆傝繕鏈夛紝榪欑寮鍙戜笉鑳芥帶鍒惰鍒涘緩鐨勮繛鎺ュ璞℃暟錛岀郴緇熻祫婧愪細琚鏃犻【鍙婄殑鍒嗛厤鍑哄幓錛屽榪炴帴榪囧錛屼篃鍙兘瀵艱嚧鍐呭瓨娉勬紡錛屾湇鍔″櫒宕╂簝銆?/div><div align="left">聽</div><div align="left">銆銆鏁版嵁搴撹繛鎺ユ睜錛坈onnection pool錛夌殑宸ヤ綔鍘熺悊</div><div align="left">銆銆1銆佸熀鏈蹇靛強鍘熺悊<br />鐢變笂闈㈢殑鍒嗘瀽鍙互鐪嬪嚭錛岄棶棰樼殑鏍規簮灝卞湪浜庡<a target="_blank"><font color="#3080cb">鏁版嵁搴?/font></a>榪炴帴璧勬簮鐨勪綆鏁堢鐞嗐傛垜浠煡閬擄紝 <div align="left">銆銆瀵逛簬鍏變韓璧勬簮錛屾湁涓涓緢钁楀悕鐨?a target="_blank"><font color="#3080cb">璁捐</font></a>妯″紡錛氳祫婧愭睜錛圧esource Pool錛夈傝妯″紡姝f槸涓轟簡瑙e喅璧勬簮鐨勯綣佸垎閰嶏箲閲婃斁鎵閫犳垚鐨勯棶棰樸備負瑙e喅涓婅堪闂錛屽彲浠ラ噰鐢ㄦ暟鎹簱榪炴帴姹犳妧鏈傛暟鎹簱榪炴帴姹犵殑鍩烘湰鎬濇兂灝辨槸涓烘暟鎹簱榪炴帴寤虹珛涓涓滅紦鍐叉睜鈥濄傞鍏堝湪緙撳啿姹犱腑鏀懼叆涓瀹氭暟閲忕殑榪炴帴錛屽綋闇瑕佸緩绔嬫暟鎹簱榪炴帴鏃訛紝鍙渶浠庘滅紦鍐叉睜鈥濅腑鍙栧嚭涓涓紝浣跨敤瀹屾瘯涔嬪悗鍐嶆斁鍥炲幓銆傛垜浠彲浠ラ氳繃璁懼畾榪炴帴姹犳渶澶ц繛鎺ユ暟鏉ラ槻姝㈢郴緇熸棤灝界殑涓庢暟鎹簱榪炴帴銆傛洿涓洪噸瑕佺殑鏄垜浠彲浠ラ氳繃榪炴帴姹犵殑綆$悊鏈哄埗鐩戣鏁版嵁搴撶殑榪炴帴鐨勬暟閲忥箲浣跨敤鎯呭喌錛屼負緋葷粺寮鍙戯箲嫻嬭瘯鍙婃ц兘璋冩暣鎻愪緵渚濇嵁銆傝繛鎺ユ睜鐨勫熀鏈伐浣滃師鐞嗚涓嬪浘2銆?/div><div align="center"><img src="http://web.rdxx.com/Files/Pic/Img/JSP_Skill/0682916281311029.gif" border="0" /><br />鍥? 榪炴帴姹犵殑鍩烘湰宸ヤ綔鍘熺悊</div><div align="left">銆銆2銆佹湇鍔″櫒鑷甫鐨勮繛鎺ユ睜</div><div align="left">銆銆JDBC鐨凙PI涓病鏈夋彁渚涜繛鎺ユ睜鐨勬柟娉曘備竴浜涘ぇ鍨嬬殑WEB搴旂敤鏈嶅姟鍣ㄥBEA鐨刉ebLogic鍜孖BM鐨刉ebSphere絳夋彁渚涗簡榪炴帴姹犵殑鏈哄埗錛屼絾鏄繀欏繪湁鍏剁涓夋柟鐨勪笓鐢ㄧ被鏂規硶鏀寔榪炴帴姹犵殑鐢ㄦ硶銆?/div><div align="left">銆銆榪炴帴姹犲叧閿棶棰樺垎鏋?/div><div align="left">銆銆1銆佸茍鍙戦棶棰?/div><div align="left">銆銆涓轟簡浣胯繛鎺ョ鐞嗘湇鍔″叿鏈夋渶澶х殑閫氱敤鎬э紝蹇呴』鑰冭檻澶氱嚎紼嬬幆澧冿紝鍗沖茍鍙戦棶棰樸傝繖涓棶棰樼浉瀵規瘮杈冨ソ瑙e喅錛屽洜涓?a target="_blank"><font color="#3080cb">Java</font></a>璇█鑷韓鎻愪緵浜嗗騫跺彂綆$悊鐨勬敮鎸侊紝浣跨敤synchronized鍏抽敭瀛楀嵆鍙‘淇濈嚎紼嬫槸鍚屾鐨勩備嬌鐢ㄦ柟娉曚負鐩存帴鍦ㄧ被鏂規硶鍓嶉潰鍔犱笂synchronized鍏抽敭瀛楋紝濡傦細</div><div align="left">public synchronized Connection getConnection錛堬級 </div><div align="left">銆銆2銆佸鏁版嵁搴撴湇鍔″櫒鍜屽鐢ㄦ埛</div><div align="left">銆銆瀵逛簬澶у瀷鐨勪紒涓氱駭搴旂敤錛屽父甯擱渶瑕佸悓鏃惰繛鎺ヤ笉鍚岀殑鏁版嵁搴擄紙濡傝繛鎺?a target="_blank"><font color="#3080cb">Oracle</font></a>鍜?a target="_blank"><font color="#3080cb">Sybase</font></a>錛夈傚浣曡繛鎺ヤ笉鍚岀殑鏁版嵁搴撳憿錛熸垜浠噰鐢ㄧ殑絳栫暐鏄細璁捐涓涓鍚堝崟渚嬫ā寮忕殑榪炴帴姹犵鐞嗙被錛屽湪榪炴帴姹犵鐞嗙被鐨勫敮涓瀹炰緥琚垱寤烘椂璇誨彇涓涓祫婧愭枃浠訛紝鍏朵腑璧勬簮鏂囦歡涓瓨鏀劇潃澶氫釜鏁版嵁搴撶殑url鍦板潃錛?lt;poolName.url>錛夛箲鐢ㄦ埛鍚嶏紙<poolName.user>錛夛箲瀵嗙爜錛?lt;poolName.password>錛夌瓑淇℃伅銆傚tx.url=192.168.1.123:5000/tx_it錛宼x.user=cyl錛宼x.password=123456銆傛牴鎹祫婧愭枃浠舵彁渚涚殑淇℃伅錛屽垱寤哄涓繛鎺ユ睜綾葷殑瀹炰緥錛屾瘡涓涓疄渚嬮兘鏄竴涓壒瀹氭暟鎹簱鐨勮繛鎺ユ睜銆傝繛鎺ユ睜綆$悊綾誨疄渚嬩負姣忎釜榪炴帴姹犲疄渚嬪彇涓涓悕瀛楋紝閫氳繃涓嶅悓鐨勫悕瀛楁潵綆$悊涓嶅悓鐨勮繛鎺ユ睜銆?/div><div align="left">銆銆瀵逛簬鍚屼竴涓暟鎹簱鏈夊涓敤鎴蜂嬌鐢ㄤ笉鍚岀殑鍚嶇О鍜屽瘑鐮佽闂殑鎯呭喌錛屼篃鍙互閫氳繃璧勬簮鏂囦歡澶勭悊錛屽嵆鍦ㄨ祫婧愭枃浠朵腑璁劇疆澶氫釜鍏鋒湁鐩稿悓url鍦板潃錛屼絾鍏鋒湁涓嶅悓鐢ㄦ埛鍚嶅拰瀵嗙爜鐨勬暟鎹簱榪炴帴淇℃伅銆?/div><div align="left">銆銆3銆佷簨鍔″鐞?/div><div align="left">銆銆鎴戜滑鐭ラ亾錛屼簨鍔″叿鏈夊師瀛愭э紝姝ゆ椂瑕佹眰瀵規暟鎹簱鐨勬搷浣滅鍚堚淎LL-ALL-NOTHING鈥濆師鍒?鍗沖浜庝竴緇凷QL璇彞瑕佷箞鍏ㄥ仛錛岃涔堝叏涓嶅仛銆?br />鍦?a target="_blank"><font color="#3080cb">Java</font></a>璇█涓紝Connection綾繪湰韜彁渚涗簡瀵逛簨鍔$殑鏀寔錛屽彲浠ラ氳繃璁劇疆Connection鐨凙utoCommit灞炴т負false,鐒跺悗鏄懼紡鐨勮皟鐢╟ommit鎴杛ollback鏂規硶鏉ュ疄鐜般備絾瑕侀珮鏁堢殑榪涜Connection澶嶇敤錛屽氨蹇呴』鎻愪緵鐩稿簲鐨勪簨鍔℃敮鎸佹満鍒躲傚彲閲囩敤姣忎竴涓簨鍔$嫭鍗犱竴涓繛鎺ユ潵瀹炵幇錛岃繖縐嶆柟娉曞彲浠ュぇ澶ч檷浣庝簨鍔$鐞嗙殑澶嶆潅鎬с? <div align="left">銆銆4銆佽繛鎺ユ睜鐨勫垎閰嶄笌閲婃斁</div><div align="left">銆銆榪炴帴姹犵殑鍒嗛厤涓庨噴鏀撅紝瀵圭郴緇熺殑鎬ц兘鏈夊緢澶х殑褰卞搷銆傚悎鐞嗙殑鍒嗛厤涓庨噴鏀撅紝鍙互鎻愰珮榪炴帴鐨勫鐢ㄥ害錛屼粠鑰岄檷浣庡緩绔嬫柊榪炴帴鐨勫紑閿錛屽悓鏃惰繕鍙互鍔犲揩鐢ㄦ埛鐨勮闂熷害銆?/div><div align="left">銆銆瀵逛簬榪炴帴鐨勭鐞嗗彲浣跨敤絀洪棽姹犮傚嵆鎶婂凡緇忓垱寤轟絾灝氭湭鍒嗛厤鍑哄幓鐨勮繛鎺ユ寜鍒涘緩鏃墮棿瀛樻斁鍒頒竴涓┖闂叉睜涓傛瘡褰撶敤鎴瘋姹備竴涓繛鎺ユ椂錛岀郴緇熼鍏堟鏌ョ┖闂叉睜鍐呮湁娌℃湁絀洪棽榪炴帴銆傚鏋滄湁灝辨妸寤虹珛鏃墮棿鏈闀匡紙閫氳繃瀹瑰櫒鐨勯『搴忓瓨鏀懼疄鐜幫級鐨勯偅涓繛鎺ュ垎閰嶇粰浠栵紙瀹為檯鏄厛鍋氳繛鎺ユ槸鍚︽湁鏁堢殑鍒ゆ柇錛屽鏋滃彲鐢ㄥ氨鍒嗛厤緇欑敤鎴鳳紝濡備笉鍙敤灝辨妸榪欎釜榪炴帴浠庣┖闂叉睜鍒犳帀錛岄噸鏂版嫻嬬┖闂叉睜鏄惁榪樻湁榪炴帴錛夛紱濡傛灉娌℃湁鍒欐鏌ュ綋鍓嶆墍寮榪炴帴姹犳槸鍚﹁揪鍒拌繛鎺ユ睜鎵鍏佽鐨勬渶澶ц繛鎺ユ暟錛坢axConn錛?濡傛灉娌℃湁杈懼埌錛屽氨鏂板緩涓涓繛鎺ワ紝濡傛灉宸茬粡杈懼埌錛屽氨絳夊緟涓瀹氱殑鏃墮棿錛坱imeout錛夈傚鏋滃湪絳夊緟鐨勬椂闂村唴鏈夎繛鎺ヨ閲婃斁鍑烘潵灝卞彲浠ユ妸榪欎釜榪炴帴鍒嗛厤緇欑瓑寰呯殑鐢ㄦ埛錛屽鏋滅瓑寰呮椂闂磋秴榪囬瀹氭椂闂磘imeout,鍒欒繑鍥炵┖鍊鹼紙null錛夈傜郴緇熷宸茬粡鍒嗛厤鍑哄幓姝e湪浣跨敤鐨勮繛鎺ュ彧鍋氳鏁幫紝褰撲嬌鐢ㄥ畬鍚庡啀榪旇繕緇欑┖闂叉睜銆傚浜庣┖闂茶繛鎺ョ殑鐘舵侊紝鍙紑杈熶笓闂ㄧ殑綰跨▼瀹氭椂媯嫻嬶紝榪欐牱浼氳姳璐逛竴瀹氱殑緋葷粺寮閿錛屼絾鍙互淇濊瘉杈冨揩鐨勫搷搴旈熷害銆備篃鍙噰鍙栦笉寮杈熶笓闂ㄧ嚎紼嬶紝鍙槸鍦ㄥ垎閰嶅墠媯嫻嬬殑鏂規硶銆?/div><div align="left">銆銆5銆佽繛鎺ユ睜鐨勯厤緗笌緇存姢</div><div align="left">銆銆榪炴帴姹犱腑鍒板簳搴旇鏀劇疆澶氬皯榪炴帴錛屾墠鑳戒嬌緋葷粺鐨勬ц兘鏈浣籌紵緋葷粺鍙噰鍙栬緗渶灝忚繛鎺ユ暟錛坢inConn錛夊拰鏈澶ц繛鎺ユ暟錛坢axConn錛夋潵鎺у埗榪炴帴姹犱腑鐨勮繛鎺ャ傛渶灝忚繛鎺ユ暟鏄郴緇熷惎鍔ㄦ椂榪炴帴姹犳墍鍒涘緩鐨勮繛鎺ユ暟銆傚鏋滃垱寤鴻繃澶氾紝鍒欑郴緇熷惎鍔ㄥ氨鎱紝浣嗗垱寤哄悗緋葷粺鐨勫搷搴旈熷害浼氬緢蹇紱濡傛灉鍒涘緩榪囧皯錛屽垯緋葷粺鍚姩鐨勫緢蹇紝鍝嶅簲璧鋒潵鍗存參銆傝繖鏍鳳紝鍙互鍦ㄥ紑鍙戞椂錛岃緗緝灝忕殑鏈灝忚繛鎺ユ暟錛屽紑鍙戣搗鏉ヤ細蹇紝鑰屽湪緋葷粺瀹為檯浣跨敤鏃惰緗緝澶х殑錛屽洜涓鴻繖鏍峰璁塊棶瀹㈡埛鏉ヨ閫熷害浼氬揩浜涖傛渶澶ц繛鎺ユ暟鏄繛鎺ユ睜涓厑璁歌繛鎺ョ殑鏈澶ф暟鐩紝鍏蜂綋璁劇疆澶氬皯錛岃鐪嬬郴緇熺殑璁塊棶閲忥紝鍙氳繃鍙嶅嫻嬭瘯錛屾壘鍒版渶浣崇偣銆?/div><div align="left">銆銆濡備綍紜繚榪炴帴姹犱腑鐨勬渶灝忚繛鎺ユ暟鍛紵鏈夊姩鎬佸拰闈欐佷袱縐嶇瓥鐣ャ傚姩鎬佸嵆姣忛殧涓瀹氭椂闂村氨瀵硅繛鎺ユ睜榪涜媯嫻嬶紝濡傛灉鍙戠幇榪炴帴鏁伴噺灝忎簬鏈灝忚繛鎺ユ暟錛屽垯琛ュ厖鐩稿簲鏁伴噺鐨勬柊榪炴帴,浠ヤ繚璇佽繛鎺ユ睜鐨勬甯歌繍杞傞潤鎬佹槸鍙戠幇絀洪棽榪炴帴涓嶅鏃跺啀鍘繪鏌ャ?br />榪炴帴姹犵殑瀹炵幇 <div align="left">銆銆1銆佽繛鎺ユ睜妯″瀷</div><div align="left">銆銆鏈枃璁ㄨ鐨勮繛鎺ユ睜鍖呮嫭涓涓繛鎺ユ睜綾伙紙DBConnectionPool錛夊拰涓涓繛鎺ユ睜綆$悊綾伙紙DBConnetionPoolManager錛夊拰涓涓厤緗枃浠舵搷浣滅被(ParseDSConfig)銆傝繛鎺ユ睜綾繪槸瀵規煇涓<a target="_blank"><font color="#3080cb">鏁版嵁搴?/font></a>鎵鏈夎繛鎺ョ殑鈥滅紦鍐叉睜鈥濓紝涓昏瀹炵幇浠ヤ笅鍔熻兘錛氣憼浠庤繛鎺ユ睜鑾峰彇鎴栧垱寤哄彲鐢ㄨ繛鎺ワ紱鈶′嬌鐢ㄥ畬姣曚箣鍚庯紝鎶婅繛鎺ヨ繑榪樼粰榪炴帴姹狅紱鈶㈠湪緋葷粺鍏抽棴鍓嶏紝鏂紑鎵鏈夎繛鎺ュ茍閲婃斁榪炴帴鍗犵敤鐨勭郴緇熻祫婧愶紱鈶h繕鑳藉澶勭悊鏃犳晥榪炴帴錛堝師鏉ョ櫥璁頒負鍙敤鐨勮繛鎺ワ紝鐢變簬鏌愮鍘熷洜涓嶅啀鍙敤錛屽瓚呮椂錛岄氳闂錛夛紝騫惰兘澶熼檺鍒惰繛鎺ユ睜涓殑榪炴帴鎬繪暟涓嶄綆浜庢煇涓瀹氬煎拰涓嶈秴榪囨煇涓瀹氬箋?5)褰撳鏁版嵁搴撴椂,涓旀暟鎹簱鏄姩鎬佸鍔犵殑璇?灝嗕細鍔犲埌閰嶇疆鏂囦歡涓?/div><div align="left">銆銆榪炴帴姹犵鐞嗙被鏄繛鎺ユ睜綾葷殑澶栬綾伙紙wrapper錛?絎﹀悎鍗曚緥妯″紡錛屽嵆緋葷粺涓彧鑳芥湁涓涓繛鎺ユ睜綆$悊綾葷殑瀹炰緥銆傚叾涓昏鐢ㄤ簬瀵瑰涓繛鎺ユ睜瀵硅薄鐨勭鐞嗭紝鍏鋒湁浠ヤ笅鍔熻兘錛氣憼瑁呰澆騫舵敞鍐岀壒瀹氭暟鎹簱鐨凧DBC椹卞姩紼嬪簭錛涒憽鏍規嵁灞炴ф枃浠剁粰瀹氱殑淇℃伅錛屽垱寤鴻繛鎺ユ睜瀵硅薄錛涒憿涓烘柟渚跨鐞嗗涓繛鎺ユ睜瀵硅薄錛屼負姣忎竴涓繛鎺ユ睜瀵硅薄鍙栦竴涓悕瀛楋紝瀹炵幇榪炴帴姹犲悕瀛椾笌鍏跺疄渚嬩箣闂寸殑鏄犲皠錛涒懀璺熻釜瀹㈡埛浣跨敤榪炴帴鎯呭喌錛屼互渚塊渶瑕佹槸鍏抽棴榪炴帴閲婃斁璧勬簮銆傝繛鎺ユ睜綆$悊綾葷殑寮曞叆涓昏鏄負浜嗘柟渚垮澶氫釜榪炴帴姹犵殑浣跨敤鍜岀鐞嗭紝濡傜郴緇熼渶瑕佽繛鎺ヤ笉鍚岀殑鏁版嵁搴擄紝鎴栬繛鎺ョ浉鍚岀殑鏁版嵁搴撲絾鐢變簬<a target="_blank"><font color="#3080cb">瀹夊叏</font></a>鎬ч棶棰橈紝闇瑕佷笉鍚岀殑鐢ㄦ埛浣跨敤涓嶅悓鐨勫悕縐板拰瀵嗙爜銆?br />聽聽聽聽聽聽聽聽 2銆佽繛鎺ユ睜瀹炵幇(緇忚繃鏈漢鏀圭増,鍙互閫傜敤澶氭暟鎹簱綾誨瀷鐨勫簲鐢ㄤ互鍙婁竴縐嶆暟鎹簱綾誨瀷澶氫釜鏁版嵁搴撲笖鏁版嵁聽 搴撶殑鏁伴噺鍙互鍔ㄦ佸鍔犵殑搴旂敤紼嬪簭)<br />聽聽聽聽聽聽聽聽 1),DBConnectionPool.java聽聽 鏁版嵁搴撹繛鎺ユ睜綾?br />聽聽聽聽聽聽聽聽 2),DBConnectionManager聽.java聽聽 鏁版嵁搴撶鐞嗙被<br />聽聽聽聽聽聽聽聽 3),DSConfigBean聽.java聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 鍗曚釜鏁版嵁搴撹繛鎺ヤ俊鎭疊ean<br />聽聽聽聽聽聽聽聽 4),ParseDSConfig.java聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 鎿嶄綔澶?榪欎釜'澶?鍖呮嫭涓嶅悓鐨勬暟鎹簱鍜屽悓涓縐嶆暟鎹簱鏈夊涓暟鎹簱)<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 鏁版嵁 閰嶇疆鏂囦歡xml<br />聽聽聽聽聽聽聽聽 5),ds.config.xml聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 鏁版嵁搴撻厤緗枃浠秞ml<br />聽聽聽聽聽聽聽聽 鍘熶唬鐮佸涓?聽<br />聽聽聽聽聽聽聽 DBConnectionPool.java聽聽 <br />聽聽聽聽聽聽聽 ----------------------------------------------------------<br />聽聽聽聽聽 /**<br />聽*聽鏁版嵁搴撹繛鎺ユ睜綾?br />聽*/<br />package <a ><font color="#000000">com.chunkyo.db</font></a>;</div><div align="left">import java.sql.Connection;<br />import java.sql.DriverManager;<br />import java.sql.SQLException;<br />import java.util.ArrayList;<br />import java.util.Iterator;<br />import java.util.Timer;</div><div align="left">/**<br />聽* @author chenyanlin<br />聽*<br />聽*/<br />public class DBConnectionPool implements TimerListener {</div><div align="left">聽private Connection con=null;<br />聽private int inUsed=0;聽聽聽 //浣跨敤鐨勮繛鎺ユ暟<br />聽private ArrayList freeConnections = new ArrayList();//瀹瑰櫒錛岀┖闂茶繛鎺?br />聽private int minConn;聽聽聽聽 //鏈灝忚繛鎺ユ暟<br />聽private int maxConn;聽聽聽聽 //鏈澶ц繛鎺?br />聽private String name;聽聽聽聽 //榪炴帴姹犲悕瀛?br />聽private String password; //瀵嗙爜<br />聽private String url;聽聽聽聽聽 //鏁版嵁搴撹繛鎺ュ湴鍧<br />聽private String driver;聽聽 //椹卞姩<br />聽private String user;聽聽聽聽 //鐢ㄦ埛鍚?br />聽public Timer timer;聽聽聽聽聽 //瀹氭椂<br />聽/**<br />聽 * <br />聽 */<br />聽public DBConnectionPool() {<br />聽聽// TODO Auto-generated constructor stub<br />聽}<br />聽/**<br />聽 * 鍒涘緩榪炴帴姹?br />聽 * @param driver<br />聽 * @param name<br />聽 * @param URL<br />聽 * @param user<br />聽 * @param password<br />聽 * @param maxConn<br />聽 */<br />聽public DBConnectionPool(String name, String driver,String URL, String user, String password, int maxConn)<br />聽{<br />聽聽this.name=name;<br />聽聽this.driver=driver;<br />聽聽this.url=URL;<br />聽聽this.user=user;<br />聽聽this.password=password;<br />聽聽this.maxConn=maxConn;<br />聽}<br />聽/**<br />聽 * 鐢ㄥ畬錛岄噴鏀捐繛鎺?br />聽 * @param con<br />聽 */<br />聽public synchronized void freeConnection(Connection con) <br />聽{<br />聽聽this.freeConnections.add(con);//娣誨姞鍒扮┖闂茶繛鎺ョ殑鏈熬<br />聽聽this.inUsed--;<br />聽}<br />聽/**<br />聽 * timeout聽 鏍規嵁timeout寰楀埌榪炴帴<br />聽 * @param timeout<br />聽 * @return<br />聽 */<br />聽public synchronized Connection getConnection(long timeout)<br />聽{<br />聽聽Connection con=null;<br />聽聽if(this.freeConnections.size()>0)<br />聽聽{<br />聽聽聽con=(Connection)this.freeConnections.get(0);<br />聽聽聽if(con==null)con=getConnection(timeout); //緇х畫鑾峰緱榪炴帴<br />聽聽}<br />聽聽else<br />聽聽{<br />聽聽聽con=newConnection(); //鏂板緩榪炴帴<br />聽聽}<br />聽聽if(this.maxConn==0||this.maxConn<this.inUsed)<br />聽聽{<br />聽聽聽con=null;//杈懼埌鏈澶ц繛鎺ユ暟錛屾殏鏃朵笉鑳借幏寰楄繛鎺ヤ簡銆?br />聽聽}<br />聽聽if(con!=null)<br />聽聽{<br />聽聽聽this.inUsed++;<br />聽聽}<br />聽聽return con;<br />聽}<br />聽/**<br />聽 * <br />聽 * 浠庤繛鎺ユ睜閲屽緱鍒拌繛鎺?br />聽 * @return<br />聽 */<br />聽public synchronized Connection getConnection()<br />聽{<br />聽聽Connection con=null;<br />聽聽if(this.freeConnections.size()>0)<br />聽聽{<br />聽聽聽con=(Connection)this.freeConnections.get(0);<br />聽聽聽this.freeConnections.remove(0);//濡傛灉榪炴帴鍒嗛厤鍑哄幓浜嗭紝灝變粠絀洪棽榪炴帴閲屽垹闄?br />聽聽聽if(con==null)con=getConnection(); //緇х畫鑾峰緱榪炴帴<br />聽聽}<br />聽聽else<br />聽聽{<br />聽聽聽con=newConnection(); //鏂板緩榪炴帴<br />聽聽}<br />聽聽if(this.maxConn==0||this.maxConn<this.inUsed)<br />聽聽{<br />聽聽聽con=null;//絳夊緟 瓚呰繃鏈澶ц繛鎺ユ椂<br />聽聽}<br />聽聽if(con!=null)<br />聽聽{<br />聽聽聽this.inUsed++;<br />聽聽聽System.out.println("寰楀埌銆"+this.name+"銆鐨勮繛鎺ワ紝鐜版湁"+inUsed+"涓繛鎺ュ湪浣跨敤!");<br />聽聽}<br />聽聽return con;<br />聽}<br />聽/**<br />聽 *閲婃斁鍏ㄩ儴榪炴帴<br />聽 *<br />聽 */<br />聽public synchronized void release()<br />聽{<br />聽聽Iterator allConns=this.freeConnections.iterator();<br />聽聽while(allConns.hasNext())<br />聽聽{<br />聽聽聽Connection con=(Connection)allConns.next();<br />聽聽聽try<br />聽聽聽{<br />聽聽聽聽con.close();<br />聽聽聽}<br />聽聽聽catch(SQLException e)<br />聽聽聽{<br />聽聽聽聽e.printStackTrace();<br />聽聽聽}<br />聽聽聽<br />聽聽}<br />聽聽this.freeConnections.clear();<br />聽聽聽<br />聽}<br />聽/**<br />聽 * 鍒涘緩鏂拌繛鎺?br />聽 * @return<br />聽 */<br />聽private Connection newConnection()<br />聽{<br />聽聽try {<br />聽聽聽Class.forName(driver);<br />聽聽聽con=DriverManager.getConnection(url, user, password);<br />聽聽} catch (ClassNotFoundException e) {<br />聽聽聽// TODO Auto-generated catch block<br />聽聽聽e.printStackTrace();<br />聽聽聽System.out.println("sorry can't find db driver!");<br />聽聽} catch (SQLException e1) {<br />聽聽聽// TODO Auto-generated catch block<br />聽聽聽e1.printStackTrace();<br />聽聽聽System.out.println("sorry can't create Connection!");<br />聽聽}<br />聽聽return con;<br />聽聽<br />聽}<br />聽/**<br />聽 * 瀹氭椂澶勭悊鍑芥暟<br />聽 */<br />聽public synchronized void TimerEvent() <br />聽{<br />聽聽聽聽 //鏆傛椂榪樻病鏈夊疄鐜頒互鍚庝細鍔犱笂鐨?br />聽}</div><div align="left">聽/**<br />聽 * @param args<br />聽 */<br />聽public static void main(String[] args) {<br />聽聽// TODO Auto-generated method stub</div><div align="left">聽}<br />聽/**<br />聽 * @return the driver<br />聽 */<br />聽public String getDriver() {<br />聽聽return driver;<br />聽}<br />聽/**<br />聽 * @param driver the driver to set<br />聽 */<br />聽public void setDriver(String driver) {<br />聽聽this.driver = driver;<br />聽}<br />聽/**<br />聽 * @return the maxConn<br />聽 */<br />聽public int getMaxConn() {<br />聽聽return maxConn;<br />聽}<br />聽/**<br />聽 * @param maxConn the maxConn to set<br />聽 */<br />聽public void setMaxConn(int maxConn) {<br />聽聽this.maxConn = maxConn;<br />聽}<br />聽/**<br />聽 * @return the minConn<br />聽 */<br />聽public int getMinConn() {<br />聽聽return minConn;<br />聽}<br />聽/**<br />聽 * @param minConn the minConn to set<br />聽 */<br />聽public void setMinConn(int minConn) {<br />聽聽this.minConn = minConn;<br />聽}<br />聽/**<br />聽 * @return the name<br />聽 */<br />聽public String getName() {<br />聽聽return name;<br />聽}<br />聽/**<br />聽 * @param name the name to set<br />聽 */<br />聽public void setName(String name) {<br />聽聽this.name = name;<br />聽}<br />聽/**<br />聽 * @return the password<br />聽 */<br />聽public String getPassword() {<br />聽聽return password;<br />聽}<br />聽/**<br />聽 * @param password the password to set<br />聽 */<br />聽public void setPassword(String password) {<br />聽聽this.password = password;<br />聽}<br />聽/**<br />聽 * @return the url<br />聽 */<br />聽public String getUrl() {<br />聽聽return url;<br />聽}<br />聽/**<br />聽 * @param url the url to set<br />聽 */<br />聽public void setUrl(String url) {<br />聽聽this.url = url;<br />聽}<br />聽/**<br />聽 * @return the user<br />聽 */<br />聽public String getUser() {<br />聽聽return user;<br />聽}<br />聽/**<br />聽 * @param user the user to set<br />聽 */<br />聽public void setUser(String user) {<br />聽聽this.user = user;<br />聽}</div><div align="left">}<br /><br />-------------------------------------------<br />聽DBConnectionManager聽.java<br />------------------------------------------<br />/**<br />聽*聽鏁版嵁搴撹繛鎺ユ睜綆$悊綾?br />聽*/<br />package <a ><font color="#000000">com.chunkyo.db</font></a>;</div><div align="left">import java.sql.Connection;<br />import java.util.ArrayList;<br />import java.util.Enumeration;<br />import java.util.HashMap;<br />import java.util.Hashtable;<br />import java.util.Iterator;<br />import java.util.Properties;<br />import java.util.Vector;</div><div align="left">import <a ><font color="#000000">com.chunkyo.db.ParseDSConfig</font></a>;<br />import <a ><font color="#000000">com.chunkyo.db.DSConfigBean</font></a>;<br />import <a ><font color="#000000">com.chunkyo.db.DBConnectionPool</font></a>;</div><div align="left">/**<br />聽* @author chenyanlin<br />聽*<br />聽*/<br />public class DBConnectionManager {</div><div align="left">聽static private DBConnectionManager instance;//鍞竴鏁版嵁搴撹繛鎺ユ睜綆$悊瀹炰緥綾?br />聽static private int clients;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //瀹㈡埛榪炴帴鏁?br />聽private Vector drivers聽 = new Vector();//椹卞姩淇℃伅<br />聽private Hashtable pools=new Hashtable();//榪炴帴姹?br />聽<br />聽/**<br />聽 * 瀹炰緥鍖栫鐞嗙被<br />聽 */<br />聽public DBConnectionManager() {<br />聽聽// TODO Auto-generated constructor stub<br />聽聽this.init();<br />聽}<br />聽/**<br />聽 * 寰楀埌鍞竴瀹炰緥綆$悊綾?br />聽 * @return<br />聽 */<br />聽static synchronized public DBConnectionManager getInstance()<br />聽{<br />聽聽if(instance==null)<br />聽聽{<br />聽聽聽instance=new DBConnectionManager();<br />聽聽}<br />聽聽return instance;<br />聽聽<br />聽}<br />聽/**<br />聽 * 閲婃斁榪炴帴<br />聽 * @param name<br />聽 * @param con<br />聽 */<br />聽public void freeConnection(String name, Connection con)<br />聽{<br />聽聽DBConnectionPool pool=(DBConnectionPool)pools.get(name);//鏍規嵁鍏抽敭鍚嶅瓧寰楀埌榪炴帴姹?br />聽聽if(pool!=null)<br />聽聽pool.freeConnection(con);//閲婃斁榪炴帴 <br />聽}<br />聽/**<br />聽 * 寰楀埌涓涓繛鎺ユ牴鎹繛鎺ユ睜鐨勫悕瀛梟ame<br />聽 * @param name<br />聽 * @return<br />聽 */<br />聽public Connection getConnection(String name)<br />聽{<br />聽聽DBConnectionPool pool=null;<br />聽聽Connection con=null;<br />聽聽pool=(DBConnectionPool)pools.get(name);//浠庡悕瀛椾腑鑾峰彇榪炴帴姹?br />聽聽con=pool.getConnection();//浠庨夊畾鐨勮繛鎺ユ睜涓幏寰楄繛鎺?br />聽聽if(con!=null)<br />聽聽System.out.println("寰楀埌榪炴帴銆傘傘?);<br />聽聽return con;<br />聽}<br />聽/**<br />聽 * 寰楀埌涓涓繛鎺ワ紝鏍規嵁榪炴帴姹犵殑鍚嶅瓧鍜岀瓑寰呮椂闂?br />聽 * @param name<br />聽 * @param time<br />聽 * @return<br />聽 */<br />聽public Connection getConnection(String name, long timeout)<br />聽{<br />聽聽DBConnectionPool pool=null;<br />聽聽Connection con=null;<br />聽聽pool=(DBConnectionPool)pools.get(name);//浠庡悕瀛椾腑鑾峰彇榪炴帴姹?br />聽聽con=pool.getConnection(timeout);//浠庨夊畾鐨勮繛鎺ユ睜涓幏寰楄繛鎺?br />聽聽System.out.println("寰楀埌榪炴帴銆傘傘?);<br />聽聽return con;<br />聽}<br />聽/**<br />聽 * 閲婃斁鎵鏈夎繛鎺?br />聽 */<br />聽public synchronized void release()<br />聽{<br />聽聽Enumeration allpools=pools.elements();<br />聽聽while(allpools.hasMoreElements())<br />聽聽{<br />聽聽聽DBConnectionPool pool=(DBConnectionPool)allpools.nextElement();<br />聽聽聽if(pool!=null)pool.release();<br />聽聽}<br />聽聽pools.clear();<br />聽}</div><div align="left">聽/**<br />聽 * 鍒涘緩榪炴帴姹?br />聽 * @param props<br />聽 */<br />聽private void createPools(DSConfigBean dsb)<br />聽{<br />聽聽DBConnectionPool dbpool=new DBConnectionPool();<br />聽聽dbpool.setName(dsb.getName());<br />聽聽dbpool.setDriver(dsb.getDriver());<br />聽聽dbpool.setUrl(dsb.getUrl());<br />聽聽dbpool.setUser(dsb.getUsername());<br />聽聽dbpool.setPassword(dsb.getPassword());<br />聽聽dbpool.setMaxConn(dsb.getMaxconn());<br />聽聽System.out.println("ioio:"+dsb.getMaxconn());<br />聽聽pools.put(dsb.getName(), dbpool);<br />聽}<br />聽/**<br />聽 * 鍒濆鍖栬繛鎺ユ睜鐨勫弬鏁?br />聽 */<br />聽private void init()<br />聽{<br />聽聽//鍔犺澆椹卞姩紼嬪簭<br />聽聽this.loadDrivers();<br />聽聽//鍒涘緩榪炴帴姹?br />聽聽Iterator alldriver=drivers.iterator();<br />聽聽while(alldriver.hasNext())<br />聽聽{<br />聽聽聽this.createPools((DSConfigBean)alldriver.next());<br />聽聽聽System.out.println("鍒涘緩榪炴帴姹犮傘傘?);<br />聽聽聽<br />聽聽}<br />聽聽System.out.println("鍒涘緩榪炴帴姹犲畬姣曘傘傘?);<br />聽}</div><div align="left">聽/**<br />聽 * 鍔犺澆椹卞姩紼嬪簭<br />聽 * @param props<br />聽 */<br />聽private void loadDrivers()<br />聽{<br />聽聽ParseDSConfig pd=new ParseDSConfig();<br />聽//璇誨彇鏁版嵁搴撻厤緗枃浠?br />聽聽drivers=pd.readConfigInfo("ds.config.xml");<br />聽聽System.out.println("鍔犺澆椹卞姩紼嬪簭銆傘傘?);<br />聽}<br />聽/**<br />聽 * @param args<br />聽 */<br />聽public static void main(String[] args) {<br />聽聽// TODO Auto-generated method stub</div><div align="left">聽}</div><div align="left">}<br />----------------------------------------<br />DSConfigBean.java<br />----------------------------------------<br />/**<br />聽*聽閰嶇疆鏂囦歡Bean綾?br />聽*/<br />package <a ><font color="#000000">com.chunkyo.db</font></a>;</div><div align="left">/**<br />聽* @author chenyanlin<br />聽*<br />聽*/<br />public class DSConfigBean {</div><div align="left">聽private String type聽聽聽聽 =""; //鏁版嵁搴撶被鍨?br />聽private String name聽聽聽聽 =""; //榪炴帴姹犲悕瀛?br />聽private String driver聽聽 =""; //鏁版嵁搴撻┍鍔?br />聽private String url聽聽聽聽聽 =""; //鏁版嵁搴搖rl<br />聽private String username =""; //鐢ㄦ埛鍚?br />聽private String password =""; //瀵嗙爜<br />聽private int maxconn聽 =0; //鏈澶ц繛鎺ユ暟<br />聽/**<br />聽 * <br />聽 */<br />聽public DSConfigBean() {<br />聽聽// TODO Auto-generated constructor stub<br />聽}</div><div align="left">聽/**<br />聽 * @param args<br />聽 */<br />聽public static void main(String[] args) {<br />聽聽// TODO Auto-generated method stub</div><div align="left">聽}</div><div align="left">聽/**<br />聽 * @return the driver<br />聽 */<br />聽public String getDriver() {<br />聽聽return driver;<br />聽}</div><div align="left">聽/**<br />聽 * @param driver the driver to set<br />聽 */<br />聽public void setDriver(String driver) {<br />聽聽this.driver = driver;<br />聽}</div><div align="left">聽/**<br />聽 * @return the maxconn<br />聽 */<br />聽public int getMaxconn() {<br />聽聽return maxconn;<br />聽}</div><div align="left">聽/**<br />聽 * @param maxconn the maxconn to set<br />聽 */<br />聽public void setMaxconn(int maxconn) {<br />聽聽this.maxconn = maxconn;<br />聽}</div><div align="left">聽/**<br />聽 * @return the name<br />聽 */<br />聽public String getName() {<br />聽聽return name;<br />聽}</div><div align="left">聽/**<br />聽 * @param name the name to set<br />聽 */<br />聽public void setName(String name) {<br />聽聽this.name = name;<br />聽}</div><div align="left">聽/**<br />聽 * @return the password<br />聽 */<br />聽public String getPassword() {<br />聽聽return password;<br />聽}</div><div align="left">聽/**<br />聽 * @param password the password to set<br />聽 */<br />聽public void setPassword(String password) {<br />聽聽this.password = password;<br />聽}</div><div align="left">聽/**<br />聽 * @return the type<br />聽 */<br />聽public String getType() {<br />聽聽return type;<br />聽}</div><div align="left">聽/**<br />聽 * @param type the type to set<br />聽 */<br />聽public void setType(String type) {<br />聽聽this.type = type;<br />聽}</div><div align="left">聽/**<br />聽 * @return the url<br />聽 */<br />聽public String getUrl() {<br />聽聽return url;<br />聽}</div><div align="left">聽/**<br />聽 * @param url the url to set<br />聽 */<br />聽public void setUrl(String url) {<br />聽聽this.url = url;<br />聽}</div><div align="left">聽/**<br />聽 * @return the username<br />聽 */<br />聽public String getUsername() {<br />聽聽return username;<br />聽}</div><div align="left">聽/**<br />聽 * @param username the username to set<br />聽 */<br />聽public void setUsername(String username) {<br />聽聽this.username = username;<br />聽}</div><div align="left">}<br />-----------------------------------------------------<br />ParseDSConfig.java<br />-----------------------------------------------------<br />/**<br />聽*聽鎿嶄綔閰嶇疆鏂囦歡綾?璇宦?鍐?淇敼 鍒犻櫎絳夋搷浣?<br />聽*/<br />package <a ><font color="#000000">com.chunkyo.db</font></a>;</div><div align="left">import java.io.FileInputStream;<br />import java.io.FileNotFoundException;<br />import java.io.FileOutputStream;<br />import java.io.IOException;<br />import java.io.InputStream;<br />import java.util.List;<br />import java.util.Vector;<br />import java.util.Iterator;</div><div align="left">import org.jdom.Document;<br />import org.jdom.Element;<br />import org.jdom.JDOMException;<br />import org.jdom.input.SAXBuilder;<br />import org.jdom.output.Format;<br />import org.jdom.output.XMLOutputter;</div><div align="left">/**<br />聽* @author chenyanlin<br />聽*<br />聽*/<br />public class ParseDSConfig {</div><div align="left">聽/**<br />聽 * 鏋勯犲嚱鏁?br />聽 */<br />聽public ParseDSConfig() {<br />聽聽// TODO Auto-generated constructor stub<br />聽}<br />聽/**<br />聽 * 璇誨彇xml閰嶇疆鏂囦歡<br />聽 * @param path<br />聽 * @return<br />聽 */<br />聽public Vector readConfigInfo(String path)<br />聽{<br />聽聽String rpath=this.getClass().getResource("").getPath().substring(1)+path;<br />聽聽Vector dsConfig=null;<br />聽聽FileInputStream fi = null;<br />聽聽try<br />聽聽{<br />聽聽聽fi=new FileInputStream(rpath);//璇誨彇璺緞鏂囦歡<br />聽聽聽dsConfig=new Vector();<br />聽聽聽SAXBuilder sb=new SAXBuilder();<br />聽聽聽Document doc=sb.build(fi);<br />聽聽聽Element root=doc.getRootElement();<br />聽聽聽List pools=root.getChildren();<br />聽聽聽Element pool=null;<br />聽聽聽Iterator allPool=pools.iterator();<br />聽聽聽while(allPool.hasNext())<br />聽聽聽{<br />聽聽聽聽pool=(Element)allPool.next();<br />聽聽聽聽DSConfigBean dscBean=new DSConfigBean();<br />聽聽聽聽dscBean.setType(pool.getChild("type").getText());<br />聽聽聽聽dscBean.setName(pool.getChild("name").getText());<br />聽聽聽聽System.out.println(dscBean.getName());<br />聽聽聽聽dscBean.setDriver(pool.getChild("driver").getText());<br />聽聽聽聽dscBean.setUrl(pool.getChild("url").getText());<br />聽聽聽聽dscBean.setUsername(pool.getChild("username").getText());<br />聽聽聽聽dscBean.setPassword(pool.getChild("password").getText());<br />聽聽聽聽dscBean.setMaxconn(Integer.parseInt(pool.getChild("maxconn").getText()));<br />聽聽聽聽dsConfig.add(dscBean);<br />聽聽聽}<br />聽聽聽<br />聽聽} catch (FileNotFoundException e) {<br />聽聽聽// TODO Auto-generated catch block<br />聽聽聽e.printStackTrace();<br />聽聽} catch (JDOMException e) {<br />聽聽聽// TODO Auto-generated catch block<br />聽聽聽e.printStackTrace();<br />聽聽} catch (IOException e) {<br />聽聽聽// TODO Auto-generated catch block<br />聽聽聽e.printStackTrace();<br />聽聽}<br />聽聽<br />聽聽finally<br />聽聽{<br />聽聽聽try {<br />聽聽聽聽fi.close();<br />聽聽聽} catch (IOException e) {<br />聽聽聽聽// TODO Auto-generated catch block<br />聽聽聽聽e.printStackTrace();<br />聽聽聽}<br />聽聽}<br />聽聽<br />聽聽return dsConfig;<br />聽}<br /></div><div align="left">/**<br />聽*淇敼閰嶇疆鏂囦歡 娌℃椂闂村啓 榪囨鏃墮棿鍐嶈創涓婂幓 鍏跺疄涓鏍風殑 <br />聽*/<br />聽public void modifyConfigInfo(String path,DSConfigBean dsb) throws Exception<br />聽{<br />聽聽String rpath=this.getClass().getResource("").getPath().substring(1)+path;<br />聽聽FileInputStream fi=null; //璇誨嚭<br />聽聽FileOutputStream fo=null; //鍐欏叆<br />聽聽<br />聽}<br />/**<br />聽*澧炲姞閰嶇疆鏂囦歡<br />聽*<br />聽*/<br />聽public void addConfigInfo(String path,DSConfigBean dsb) <br />聽{<br />聽聽String rpath=this.getClass().getResource("").getPath().substring(1)+path;<br />聽聽FileInputStream fi=null;<br />聽聽FileOutputStream fo=null;<br />聽聽try<br />聽聽{<br />聽聽聽fi=new FileInputStream(rpath);//璇誨彇xml嫻?br />聽聽聽<br />聽聽聽SAXBuilder sb=new SAXBuilder();<br />聽聽聽<br />聽聽聽Document doc=sb.build(fi); //寰楀埌xml<br />聽聽聽Element root=doc.getRootElement();<br />聽聽聽List pools=root.getChildren();//寰楀埌xml瀛愭爲<br />聽聽聽<br />聽聽聽Element newpool=new Element("pool"); //鍒涘緩鏂拌繛鎺ユ睜<br />聽聽聽<br />聽聽聽Element pooltype=new Element("type"); //璁劇疆榪炴帴姹犵被鍨?br />聽聽聽pooltype.setText(dsb.getType());<br />聽聽聽newpool.addContent(pooltype);<br />聽聽聽<br />聽聽聽Element poolname=new Element("name");//璁劇疆榪炴帴姹犲悕瀛?br />聽聽聽poolname.setText(dsb.getName());<br />聽聽聽newpool.addContent(poolname);<br />聽聽聽<br />聽聽聽Element pooldriver=new Element("driver"); //璁劇疆榪炴帴姹犻┍鍔?br />聽聽聽pooldriver.addContent(dsb.getDriver());<br />聽聽聽newpool.addContent(pooldriver);<br />聽聽聽<br />聽聽聽Element poolurl=new Element("url");//璁劇疆榪炴帴姹爑rl<br />聽聽聽poolurl.setText(dsb.getUrl());<br />聽聽聽newpool.addContent(poolurl);<br />聽聽聽<br />聽聽聽Element poolusername=new Element("username");//璁劇疆榪炴帴姹犵敤鎴峰悕<br />聽聽聽poolusername.setText(dsb.getUsername());<br />聽聽聽newpool.addContent(poolusername);<br />聽聽聽<br />聽聽聽Element poolpassword=new Element("password");//璁劇疆榪炴帴姹犲瘑鐮?br />聽聽聽poolpassword.setText(dsb.getPassword());<br />聽聽聽newpool.addContent(poolpassword);<br />聽聽聽<br />聽聽聽Element poolmaxconn=new Element("maxconn");//璁劇疆榪炴帴姹犳渶澶ц繛鎺?br />聽聽聽poolmaxconn.setText(String.valueOf(dsb.getMaxconn()));<br />聽聽聽newpool.addContent(poolmaxconn);<br />聽聽聽pools.add(newpool);//灝哻hild娣誨姞鍒皉oot<br />聽聽聽Format format = Format.getPrettyFormat();<br />聽聽聽聽聽 format.setIndent("");<br />聽聽聽聽聽 format.setEncoding("utf-8");<br />聽聽聽聽聽 XMLOutputter outp = new XMLOutputter(format);<br />聽聽聽聽聽 fo = new FileOutputStream(rpath);<br />聽聽聽聽聽 outp.output(doc, fo);<br />聽聽} catch (FileNotFoundException e) {<br />聽聽聽// TODO Auto-generated catch block<br />聽聽聽e.printStackTrace();<br />聽聽} catch (JDOMException e) {<br />聽聽聽// TODO Auto-generated catch block<br />聽聽聽e.printStackTrace();<br />聽聽} catch (IOException e) {<br />聽聽聽// TODO Auto-generated catch block<br />聽聽聽e.printStackTrace();<br />聽聽}<br />聽聽finally<br />聽聽{<br />聽聽聽<br />聽聽}<br />聽}<br />聽/**<br />聽 *鍒犻櫎閰嶇疆鏂囦歡<br />聽 */<br />聽public void delConfigInfo(String path,String name)<br />聽{<br />聽聽String rpath=this.getClass().getResource("").getPath().substring(1)+path;<br />聽聽FileInputStream fi = null;<br />聽聽FileOutputStream fo=null;<br />聽聽try<br />聽聽{<br />聽聽聽fi=new FileInputStream(rpath);//璇誨彇璺緞鏂囦歡<br />聽聽聽SAXBuilder sb=new SAXBuilder();<br />聽聽聽Document doc=sb.build(fi);<br />聽聽聽Element root=doc.getRootElement();<br />聽聽聽List pools=root.getChildren();<br />聽聽聽Element pool=null;<br />聽聽聽Iterator allPool=pools.iterator();<br />聽聽聽while(allPool.hasNext())<br />聽聽聽{<br />聽聽聽聽pool=(Element)allPool.next();<br />聽聽聽聽if(pool.getChild("name").getText().equals(name))<br />聽聽聽聽{<br />聽聽聽聽聽pools.remove(pool);<br />聽聽聽聽聽break;<br />聽聽聽聽}<br />聽聽聽}<br />聽聽聽Format format = Format.getPrettyFormat();<br />聽聽聽聽聽 format.setIndent("");<br />聽聽聽聽聽 format.setEncoding("utf-8");<br />聽聽聽聽聽 XMLOutputter outp = new XMLOutputter(format);<br />聽聽聽聽聽 fo = new FileOutputStream(rpath);<br />聽聽聽聽聽 outp.output(doc, fo);</div><div align="left">聽聽聽<br />聽聽} catch (FileNotFoundException e) {<br />聽聽聽// TODO Auto-generated catch block<br />聽聽聽e.printStackTrace();<br />聽聽} catch (JDOMException e) {<br />聽聽聽// TODO Auto-generated catch block<br />聽聽聽e.printStackTrace();<br />聽聽} catch (IOException e) {<br />聽聽聽// TODO Auto-generated catch block<br />聽聽聽e.printStackTrace();<br />聽聽}<br />聽聽<br />聽聽finally<br />聽聽{<br />聽聽聽try {<br />聽聽聽聽fi.close();<br />聽聽聽} catch (IOException e) {<br />聽聽聽聽// TODO Auto-generated catch block<br />聽聽聽聽e.printStackTrace();<br />聽聽聽}<br />聽聽}<br />聽}<br />聽/**<br />聽 * @param args<br />聽 * @throws Exception <br />聽 */<br />聽public static void main(String[] args) throws Exception {<br />聽聽// TODO Auto-generated method stub</div><div align="left">聽聽ParseDSConfig pd=new ParseDSConfig();<br />聽聽String path="ds.config.xml";<br />聽聽pd.readConfigInfo(path);<br />聽聽//pd.delConfigInfo(path, "tj012006");<br />聽聽DSConfigBean dsb=new DSConfigBean();<br />聽聽dsb.setType("oracle");<br />聽聽dsb.setName("yyy004");<br />聽聽dsb.setDriver("org.oracle.jdbc");<br />聽聽dsb.setUrl("jdbc:oracle://localhost");<br />聽聽dsb.setUsername("sa");<br />聽聽dsb.setPassword("");<br />聽聽dsb.setMaxconn(1000);<br />聽聽pd.addConfigInfo(path, dsb);<br />聽聽pd.delConfigInfo(path, "yyy001");<br />聽}</div><div align="left">}<br /><br />--------------------------------------<br />ds.config.xml聽聽 閰嶇疆鏂囦歡<br />--------------------------------------<br /><br /><br /><ds-config><br /><pool><br /><type>mysql</type><br /><name>user</name><br /><driver>com.mysql.jdbc.driver</driver><br /><url>jdbc:mysql://localhost:3306/user</url><br /><username>sa</username><br /><password>123456</password><br /><maxconn>100</maxconn><br /></pool><br /><pool><br /><type>mysql</type><br /><name>user2</name><br /><driver>com.mysql.jdbc.driver</driver><br /><url>jdbc:mysql://localhost:3306/user2</url><br /><username>sa</username><br /><password>1234</password><br /><maxconn>10</maxconn><br /></pool><br /><pool><br /><type>sql2000</type><br /><name>books</name><br /><driver>com.microsoft.sqlserver.driver</driver><br /><url>jdbc:sqlserver://localhost:1433/books:databasename=books</url><br /><username>sa</username><br /><password></password><br /><maxconn>100</maxconn><br /></pool><br /></ds-config><br /><br /><br />3. 榪炴帴姹犵殑浣跨敤<br />聽 1銆侰onnection鐨勮幏寰楀拰閲婃斁<br />聽 DBConnectionManager聽聽 connectionMan=DBConnectionManager聽.getInstance();//寰楀埌鍞竴瀹炰緥<br />聽聽 //寰楀埌榪炴帴<br />聽聽 String name="mysql";//浠庝笂涓嬫枃寰楀埌浣犺璁塊棶鐨勬暟鎹簱鐨勫悕瀛?br />聽聽 Connection聽 con=connectionMan.getConnection(name);<br />聽 //浣跨敤<br />聽 銆傘傘傘傘傘傘?br />聽 // 浣跨敤瀹屾瘯<br />聽connectionMan.freeConnection(name,con);//閲婃斁錛屼絾騫舵湭鏂紑榪炴帴<br />聽2銆傛暟鎹簱榪炴帴鐨勫姩鎬佸鍔犲拰榪炴帴姹犵殑鍔ㄦ佸鍔?br />聽聽聽聽聽 1銆傝皟鐢▁ml鎿嶄綔澧炲姞綾?br /><br />聽聽聽聽聽聽2銆傞噸鏂板疄渚嬪崕榪炴帴姹犵鐞嗘睜綾?br /></div></div></div></div><img src ="http://www.tkk7.com/liaojiyong/aggbug/105715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/liaojiyong/" target="_blank">liaojiyong</a> 2007-03-23 09:33 <a href="http://www.tkk7.com/liaojiyong/archive/2007/03/23/105715.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍫嗗悇鏍堢殑鍖哄埆錛堣漿錛?/title><link>http://www.tkk7.com/liaojiyong/archive/2006/12/22/89510.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Fri, 22 Dec 2006 06:16:00 GMT</pubDate><guid>http://www.tkk7.com/liaojiyong/archive/2006/12/22/89510.html</guid><wfw:comment>http://www.tkk7.com/liaojiyong/comments/89510.html</wfw:comment><comments>http://www.tkk7.com/liaojiyong/archive/2006/12/22/89510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/liaojiyong/comments/commentRss/89510.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/liaojiyong/services/trackbacks/89510.html</trackback:ping><description><![CDATA[ <p> <span id="px3rdvv" class="oblog_text" twffan="done">涓銆侀澶囩煡璇嗏旂▼搴忕殑鍐呭瓨鍒嗛厤</span> </p> <p>涓涓敱c/C++緙栬瘧鐨勭▼搴忓崰鐢ㄧ殑鍐呭瓨鍒嗕負浠ヤ笅鍑犱釜閮ㄥ垎<br />1銆佹爤鍖猴紙stack錛夆?鐢辯紪璇戝櫒鑷姩鍒嗛厤閲婃斁錛屽瓨鏀懼嚱鏁扮殑鍙傛暟鍊鹼紝灞閮ㄥ彉閲忕殑鍊肩瓑銆傚叾鎿嶄綔鏂瑰紡綾諱技浜庢暟鎹粨鏋勪腑鐨勬爤銆?br />2銆佸爢鍖猴紙heap錛?鈥?涓鑸敱紼嬪簭鍛樺垎閰嶉噴鏀撅紝鑻ョ▼搴忓憳涓嶉噴鏀撅紝紼嬪簭緇撴潫鏃跺彲鑳界敱OS鍥炴敹銆傛敞鎰忓畠涓庢暟鎹粨鏋勪腑鐨勫爢鏄袱鍥炰簨錛屽垎閰嶆柟寮忓掓槸綾諱技浜庨摼琛紝鍛靛懙銆?br />3銆佸叏灞鍖猴紙闈欐佸尯錛夛紙static錛夆旓紝鍏ㄥ眬鍙橀噺鍜岄潤鎬佸彉閲忕殑瀛樺偍鏄斁鍦ㄤ竴鍧楃殑錛屽垵濮嬪寲鐨勫叏灞鍙橀噺鍜岄潤鎬佸彉閲忓湪涓鍧楀尯鍩燂紝鏈垵濮嬪寲鐨勫叏灞鍙橀噺鍜屾湭鍒濆鍖栫殑闈欐佸彉閲忓湪鐩擱偦鐨勫彟涓鍧楀尯鍩熴?- 紼嬪簭緇撴潫鍚庢湁緋葷粺閲婃斁<br />4銆佹枃瀛楀父閲忓尯 鈥斿父閲忓瓧絎︿覆灝辨槸鏀懼湪榪欓噷鐨勩傜▼搴忕粨鏉熷悗鐢辯郴緇熼噴鏀?br />5銆佺▼搴忎唬鐮佸尯鈥斿瓨鏀懼嚱鏁頒綋鐨勪簩榪涘埗浠g爜銆?br />浜屻佷緥瀛愮▼搴?br />榪欐槸涓涓墠杈堝啓鐨勶紝闈炲父璇︾粏<br />//main.cpp<br />int a = 0; 鍏ㄥ眬鍒濆鍖栧尯<br />char *p1; 鍏ㄥ眬鏈垵濮嬪寲鍖?br />main()<br />{<br />int b; 鏍?br />char s[] = "abc"; 鏍?br />char *p2; 鏍?br />char *p3 = "123456"; 123456\0鍦ㄥ父閲忓尯錛宲3鍦ㄦ爤涓娿?br />static int c =0錛?鍏ㄥ眬錛堥潤鎬侊級鍒濆鍖栧尯<br />p1 = (char *)malloc(10);<br />p2 = (char *)malloc(20);<br />鍒嗛厤寰楁潵寰?0鍜?0瀛楄妭鐨勫尯鍩熷氨鍦ㄥ爢鍖恒?br />strcpy(p1, "123456"); 123456\0鏀懼湪甯擱噺鍖猴紝緙栬瘧鍣ㄥ彲鑳戒細灝嗗畠涓巔3鎵鎸囧悜鐨?123456"浼樺寲鎴愪竴涓湴鏂廣?br />}</p> <p> <br />浜屻佸爢鍜屾爤鐨勭悊璁虹煡璇?/p> <p>2.1鐢寵鏂瑰紡<br />stack:<br />鐢辯郴緇熻嚜鍔ㄥ垎閰嶃?渚嬪錛屽0鏄庡湪鍑芥暟涓竴涓眬閮ㄥ彉閲?int b; 緋葷粺鑷姩鍦ㄦ爤涓負b寮杈熺┖闂?br />heap:<br />闇瑕佺▼搴忓憳鑷繁鐢寵錛屽茍鎸囨槑澶у皬錛屽湪c涓璵alloc鍑芥暟<br />濡俻1 = (char *)malloc(10);<br />鍦–++涓敤new榪愮畻絎?br />濡俻2 = (char *)malloc(10);<br />浣嗘槸娉ㄦ剰p1銆乸2鏈韓鏄湪鏍堜腑鐨勩?/p> <p> <br />2.2<br />鐢寵鍚庣郴緇熺殑鍝嶅簲<br />鏍堬細鍙鏍堢殑鍓╀綑絀洪棿澶т簬鎵鐢寵絀洪棿錛岀郴緇熷皢涓虹▼搴忔彁渚涘唴瀛橈紝鍚﹀垯灝嗘姤寮傚父鎻愮ず鏍堟孩鍑恒?br />鍫嗭細棣栧厛搴旇鐭ラ亾鎿嶄綔緋葷粺鏈変竴涓褰曠┖闂插唴瀛樺湴鍧鐨勯摼琛紝褰撶郴緇熸敹鍒扮▼搴忕殑鐢寵鏃訛紝<br />浼氶亶鍘嗚閾捐〃錛屽鎵劇涓涓┖闂村ぇ浜庢墍鐢寵絀洪棿鐨勫爢緇撶偣錛岀劧鍚庡皢璇ョ粨鐐逛粠絀洪棽緇撶偣閾捐〃涓垹闄わ紝騫跺皢璇ョ粨鐐圭殑絀洪棿鍒嗛厤緇欑▼搴忥紝鍙﹀錛屽浜庡ぇ澶氭暟緋葷粺錛屼細鍦ㄨ繖鍧楀唴瀛樼┖闂翠腑鐨勯鍦板潃澶勮褰曟湰嬈″垎閰嶇殑澶у皬錛岃繖鏍鳳紝浠g爜涓殑delete璇彞鎵嶈兘姝g‘鐨勯噴鏀炬湰鍐呭瓨絀洪棿銆傚彟澶栵紝鐢變簬鎵懼埌鐨勫爢緇撶偣鐨勫ぇ灝忎笉涓瀹氭濂界瓑浜庣敵璇風殑澶у皬錛岀郴緇熶細鑷姩鐨勫皢澶氫綑鐨勯偅閮ㄥ垎閲嶆柊鏀懼叆絀洪棽閾捐〃涓?/p> <p>2.3鐢寵澶у皬鐨勯檺鍒?br />鏍堬細鍦╓indows涓?鏍堟槸鍚戜綆鍦板潃鎵╁睍鐨勬暟鎹粨鏋勶紝鏄竴鍧楄繛緇殑鍐呭瓨鐨勫尯鍩熴傝繖鍙ヨ瘽鐨勬剰鎬濇槸鏍堥《鐨勫湴鍧鍜屾爤鐨勬渶澶у閲忔槸緋葷粺棰勫厛瑙勫畾濂界殑錛屽湪WINDOWS涓嬶紝鏍堢殑澶у皬鏄?M錛堜篃鏈夌殑璇存槸1M錛屾諱箣鏄竴涓紪璇戞椂灝辯‘瀹氱殑甯告暟錛夛紝濡傛灉鐢寵鐨勭┖闂磋秴榪囨爤鐨勫墿浣欑┖闂存椂錛屽皢鎻愮ずoverflow銆傚洜姝わ紝鑳戒粠鏍堣幏寰楃殑絀洪棿杈冨皬銆?br />鍫嗭細鍫嗘槸鍚戦珮鍦板潃鎵╁睍鐨勬暟鎹粨鏋勶紝鏄笉榪炵畫鐨勫唴瀛樺尯鍩熴傝繖鏄敱浜庣郴緇熸槸鐢ㄩ摼琛ㄦ潵瀛樺偍鐨勭┖闂插唴瀛樺湴鍧鐨勶紝鑷劧鏄笉榪炵畫鐨勶紝鑰岄摼琛ㄧ殑閬嶅巻鏂瑰悜鏄敱浣庡湴鍧鍚戦珮鍦板潃銆傚爢鐨勫ぇ灝忓彈闄愪簬璁$畻鏈虹郴緇熶腑鏈夋晥鐨勮櫄鎷熷唴瀛樸傜敱姝ゅ彲瑙侊紝鍫嗚幏寰楃殑絀洪棿姣旇緝鐏墊椿錛屼篃姣旇緝澶с?/p> <p> <br />2.4鐢寵鏁堢巼鐨勬瘮杈冿細<br />鏍堢敱緋葷粺鑷姩鍒嗛厤錛岄熷害杈冨揩銆備絾紼嬪簭鍛樻槸鏃犳硶鎺у埗鐨勩?br />鍫嗘槸鐢眓ew鍒嗛厤鐨勫唴瀛橈紝涓鑸熷害姣旇緝鎱紝鑰屼笖瀹規槗浜х敓鍐呭瓨紕庣墖,涓嶈繃鐢ㄨ搗鏉ユ渶鏂逛究.<br />鍙﹀錛屽湪WINDOWS涓嬶紝鏈濂界殑鏂瑰紡鏄敤VirtualAlloc鍒嗛厤鍐呭瓨錛屼粬涓嶆槸鍦ㄥ爢錛屼篃涓嶆槸鍦ㄦ爤鏄洿鎺ュ湪榪涚▼鐨勫湴鍧絀洪棿涓繚鐣欎竴蹇唴瀛橈紝铏界劧鐢ㄨ搗鏉ユ渶涓嶆柟渚褲備絾鏄熷害蹇紝涔熸渶鐏墊椿銆?/p> <p>2.5鍫嗗拰鏍堜腑鐨勫瓨鍌ㄥ唴瀹?br />鏍堬細鍦ㄥ嚱鏁拌皟鐢ㄦ椂錛岀涓涓繘鏍堢殑鏄富鍑芥暟涓悗鐨勪笅涓鏉℃寚浠わ紙鍑芥暟璋冪敤璇彞鐨勪笅涓鏉″彲鎵ц璇彞錛夌殑鍦板潃錛岀劧鍚庢槸鍑芥暟鐨勫悇涓弬鏁幫紝鍦ㄥぇ澶氭暟鐨凜緙栬瘧鍣ㄤ腑錛屽弬鏁版槸鐢卞彸寰宸﹀叆鏍堢殑錛岀劧鍚庢槸鍑芥暟涓殑灞閮ㄥ彉閲忋傛敞鎰忛潤鎬佸彉閲忔槸涓嶅叆鏍堢殑銆?br />褰撴湰嬈″嚱鏁拌皟鐢ㄧ粨鏉熷悗錛屽眬閮ㄥ彉閲忓厛鍑烘爤錛岀劧鍚庢槸鍙傛暟錛屾渶鍚庢爤欏舵寚閽堟寚鍚戞渶寮濮嬪瓨鐨勫湴鍧錛屼篃灝辨槸涓誨嚱鏁頒腑鐨勪笅涓鏉℃寚浠わ紝紼嬪簭鐢辮鐐圭戶緇繍琛屻?br />鍫嗭細涓鑸槸鍦ㄥ爢鐨勫ご閮ㄧ敤涓涓瓧鑺傚瓨鏀懼爢鐨勫ぇ灝忋傚爢涓殑鍏蜂綋鍐呭鏈夌▼搴忓憳瀹夋帓銆?/p> <p>2.6瀛樺彇鏁堢巼鐨勬瘮杈?/p> <p>char s1[] = "aaaaaaaaaaaaaaa";<br />char *s2 = "bbbbbbbbbbbbbbbbb";<br />aaaaaaaaaaa鏄湪榪愯鏃跺埢璧嬪肩殑錛?br />鑰宐bbbbbbbbbb鏄湪緙栬瘧鏃跺氨紜畾鐨勶紱<br />浣嗘槸錛屽湪浠ュ悗鐨勫瓨鍙栦腑錛屽湪鏍堜笂鐨勬暟緇勬瘮鎸囬拡鎵鎸囧悜鐨勫瓧絎︿覆(渚嬪鍫?蹇?br />姣斿錛?br />錛僫 nclude<br />void main()<br />{<br />char a = 1;<br />char c[] = "1234567890";<br />char *p ="1234567890";<br />a = c[1];<br />a = p[1];<br />return;<br />}<br />瀵瑰簲鐨勬眹緙栦唬鐮?br />10: a = c[1];<br />00401067 8A 4D F1 mov cl,byte ptr [ebp-0Fh]<br />0040106A 88 4D FC mov byte ptr [ebp-4],cl<br />11: a = p[1];<br />0040106D 8B 55 EC mov edx,dword ptr [ebp-14h]<br />00401070 8A 42 01 mov al,byte ptr [edx+1]<br />00401073 88 45 FC mov byte ptr [ebp-4],al<br />絎竴縐嶅湪璇誨彇鏃剁洿鎺ュ氨鎶婂瓧絎︿覆涓殑鍏冪礌璇誨埌瀵勫瓨鍣╟l涓紝鑰岀浜岀鍒欒鍏堟妸鎸囬拡鍊艱鍒癳dx涓紝鍦ㄦ牴鎹甧dx璇誨彇瀛楃錛屾樉鐒舵參浜嗐?/p> <p> <br />2.7灝忕粨錛?br />鍫嗗拰鏍堢殑鍖哄埆鍙互鐢ㄥ涓嬬殑姣斿柣鏉ョ湅鍑猴細<br />浣跨敤鏍堝氨璞℃垜浠幓楗閲屽悆楗紝鍙鐐硅彍錛堝彂鍑虹敵璇鳳級銆佷粯閽便佸拰鍚冿紙浣跨敤錛夛紝鍚冮ケ浜嗗氨璧幫紝涓嶅繀鐞嗕細鍒囪彍銆佹礂鑿滅瓑鍑嗗宸ヤ綔鍜屾礂紕椼佸埛閿呯瓑鎵熬宸ヤ綔錛屼粬鐨勫ソ澶勬槸蹇嵎錛屼絾鏄嚜鐢卞害灝忋?br />浣跨敤鍫嗗氨璞℃槸鑷繁鍔ㄦ墜鍋氬枩嬈㈠悆鐨勮彍鑲達紝姣旇緝楹葷儲錛屼絾鏄瘮杈冪鍚堣嚜宸辯殑鍙e懗錛岃屼笖鑷敱搴﹀ぇ</p> <img src ="http://www.tkk7.com/liaojiyong/aggbug/89510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/liaojiyong/" target="_blank">liaojiyong</a> 2006-12-22 14:16 <a href="http://www.tkk7.com/liaojiyong/archive/2006/12/22/89510.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>寰楀埌PrepareStatement鏈緇堟墽琛岀殑sql璇彞鐨勬柟娉?杞?http://www.tkk7.com/liaojiyong/archive/2006/07/24/59842.htmlliaojiyongliaojiyongMon, 24 Jul 2006 08:22:00 GMThttp://www.tkk7.com/liaojiyong/archive/2006/07/24/59842.htmlhttp://www.tkk7.com/liaojiyong/comments/59842.htmlhttp://www.tkk7.com/liaojiyong/archive/2006/07/24/59842.html#Feedback0http://www.tkk7.com/liaojiyong/comments/commentRss/59842.htmlhttp://www.tkk7.com/liaojiyong/services/trackbacks/59842.html
鍦–SDN鐨凧AVA鍩虹鐗?甯稿父鏈変漢闂強濡備綍寰楀埌PreparedStatement鏈緇堟墽琛岀殑SQL璇彞;鎴栬呭浣曞湪鎺у埗鍙拌緭鍑哄崰浣嶇鐨勭湡瀹炲?....

鍘熷洜灝辨槸PreparedStatement鎵ц鐨剆ql璇彞鏈夊ぇ閲忕殑鍗犱綅絎?....

闂璇稿JDBC涓?
濡備綍寰楀埌聽conn.prepareStatement聽鏈緇堟墽琛岀殑sql璇彞銆?br />sql="update聽table1聽set聽a=?,b=?"
stmt聽
=聽con.prepareStatement(sql);
stmt.setObjec聽t(
1,"a");
stmt.setObjec聽t(
2,"b");

甯屾湜鍙互閫氳繃stmt鎴栬卌onn聽寰楀埌錛?br />update聽table1聽set聽a
='a',b='b'

浜︽垨Hibernate涓?br />
濡傛垜鎵ц錛歠ind("select聽*聽from聽t_table聽where聽id聽=聽?",new聽Integer(5));
鍦ㄦ帶鍒跺彴鏄劇ずSQL鏃跺彧鏄劇ず錛歴elect聽
*聽from聽t_table聽where聽id聽=?
濡備綍鎵嶈兘鍋氬埌灝嗘帶鍒跺彴鏄劇ず鐨勫崰浣嶇鐢ㄥ叾鐪熷疄鐨勫兼潵鏇挎崲錛?br />鍗蟲帶鍒跺彴杈撳嚭鏃舵樉紺猴細select聽
*聽from聽t_table聽where聽id聽=5

鏃犲畠錛屾棤璁篔DBC榪樻槸Hiberante閮戒笉鎻愪緵榛樿瑙e喅鏂規錛屼絾鏄弬鏁版槸璁劇疆榪涘幓鐨勶紝鎴戜滑鍦ㄨ緗殑榪囩▼涓彲浠ユ湁鍏呭垎鐨勭悊鐢辨潵鎴彇騫惰幏寰楄嚜宸辨兂瑕佺殑涓滆タ錛岀被浼間簬AOP鐞嗚銆?br />
鍏變韓鎴戝湪宸ョ▼涓殑浣跨敤鏂規硶錛?br />鎻掑叆鎿嶄綔錛?br />
/**
聽聽聽聽聽*聽鎵ц鎻掑叆鏁版嵁搴撶殑璇彞
聽聽聽聽聽*聽
@param聽sql
聽聽聽聽聽*聽
@param聽params
聽聽聽聽聽*聽
@return聽榪斿洖鐢熸垚鐨勪富閿?br />聽聽聽聽聽*/
聽聽聽聽
publicint聽executeInsert(String聽sql,聽Object[]聽params)聽{
聽聽聽聽聽聽聽聽Connection聽conn聽
=null;
聽聽聽聽聽聽聽聽PreparedStatement聽pstmt聽
=null;
聽聽聽聽聽聽聽聽ResultSet聽rs聽
=null;
聽聽聽聽聽聽聽聽
try聽{
聽聽聽聽聽聽聽聽聽聽聽聽
//1聽鑾峰緱榪炴帴
聽聽聽聽聽聽聽聽聽聽聽聽conn聽=聽MyDBConnection.getInstance().getConnection();
聽聽聽聽聽聽聽聽聽聽聽聽
//2聽璁劇疆鎻愪氦鏂瑰紡涓虹▼搴忔帶鍒?/span>
聽聽聽聽聽聽聽聽聽聽聽聽conn.setAutoCommit(false);
聽聽聽聽聽聽聽聽聽聽聽聽
//3聽鑾峰緱璇彞瀵硅薄
聽聽聽聽聽聽聽聽聽聽聽聽pstmt聽=聽conn.prepareStatement(sql,聽Statement.RETURN_GENERATED_KEYS);
聽聽聽聽聽聽聽聽聽聽聽聽
//4聽璁劇疆SQL璇彞鐨勫弬鏁?/span>
聽聽聽聽聽聽聽聽聽聽聽聽if聽(null!=聽params聽&&0<聽params.length)聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽setParams(pstmt,聽params);
聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽
//5聽鎵撳嵃SQL璇彞
聽聽聽聽聽聽聽聽聽聽聽聽if聽(MyDBConstants.showSQL)聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽getPreparedSQL(sql,聽params);
聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽
//6聽鎵ц璇彞
聽聽聽聽聽聽聽聽聽聽聽聽pstmt.executeUpdate();
聽聽聽聽聽聽聽聽聽聽聽聽
//7聽紼嬪簭鎻愪氦
聽聽聽聽聽聽聽聽聽聽聽聽conn.commit();
聽聽聽聽聽聽聽聽聽聽聽聽
//8聽榪斿洖鐢熸垚鐨勪富閿?/span>
聽聽聽聽聽聽聽聽聽聽聽聽rs聽=聽pstmt.getGeneratedKeys();
聽聽聽聽聽聽聽聽聽聽聽聽
int聽generatedKey聽=0;
聽聽聽聽聽聽聽聽聽聽聽聽
if聽(rs.next())聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽generatedKey聽
=聽rs.getInt(1);
聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽
if聽(0<聽generatedKey)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
thrownew聽MySQLException("鎻掑叆璁板綍鏃跺嚭閿?/span>");
聽聽聽聽聽聽聽聽聽聽聽聽
return聽generatedKey;
聽聽聽聽聽聽聽聽}聽
catch聽(SQLException聽e)聽{
聽聽聽聽聽聽聽聽聽聽聽聽
//鍥炴粴
聽聽聽聽聽聽聽聽聽聽聽聽MyDBUtil.rollBack(conn);
聽聽聽聽聽聽聽聽聽聽聽聽
thrownew聽MySQLException(e);
聽聽聽聽聽聽聽聽}聽
finally聽{
聽聽聽聽聽聽聽聽聽聽聽聽
//鍏抽棴鎵撳紑鐨勬搷浣?/span>
聽聽聽聽聽聽聽聽聽聽聽聽MyDBUtil.close(conn,聽pstmt,聽rs);
聽聽聽聽聽聽聽聽}
聽聽聽聽}


鏇存柊鏌ユ壘鎿嶄綔錛?br />
/**
聽聽聽聽聽*聽鎵ц鏇存柊鎴栬呭垹闄ゆ暟鎹簱鐨勮鍙?br />聽聽聽聽聽*聽
@param聽sql
聽聽聽聽聽*聽
@param聽params
聽聽聽聽聽*聽
@return聽榪斿洖鎵ц鎴愬姛涓庡惁
聽聽聽聽聽
*/
聽聽聽聽
publicboolean聽executeUpdateDel(String聽sql,聽Object[]聽params)聽{
聽聽聽聽聽聽聽聽
boolean聽isSuccess聽=false;
聽聽聽聽聽聽聽聽Connection聽conn聽
=null;
聽聽聽聽聽聽聽聽PreparedStatement聽pstmt聽
=null;
聽聽聽聽聽聽聽聽
try聽{
聽聽聽聽聽聽聽聽聽聽聽聽
//1聽鑾峰緱榪炴帴
聽聽聽聽聽聽聽聽聽聽聽聽conn聽=聽MyDBConnection.getInstance().getConnection();
聽聽聽聽聽聽聽聽聽聽聽聽
//2聽璁劇疆鎻愪氦鏂瑰紡涓虹▼搴忔帶鍒?/span>
聽聽聽聽聽聽聽聽聽聽聽聽conn.setAutoCommit(false);
聽聽聽聽聽聽聽聽聽聽聽聽
//3聽鑾峰緱璇彞瀵硅薄
聽聽聽聽聽聽聽聽聽聽聽聽pstmt聽=聽conn.prepareStatement(sql);
聽聽聽聽聽聽聽聽聽聽聽聽
//4聽璁劇疆SQL璇彞鐨勫弬鏁?/span>
聽聽聽聽聽聽聽聽聽聽聽聽if聽(null!=聽params聽&&0<聽params.length)聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽setParams(pstmt,聽params);
聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽
//5聽鎵撳嵃SQL璇彞
聽聽聽聽聽聽聽聽聽聽聽聽if聽(MyDBConstants.showSQL)聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽getPreparedSQL(sql,聽params);
聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽
//6聽鎵ц璇彞
聽聽聽聽聽聽聽聽聽聽聽聽pstmt.executeUpdate();
聽聽聽聽聽聽聽聽聽聽聽聽
//7聽紼嬪簭鎻愪氦
聽聽聽聽聽聽聽聽聽聽聽聽conn.commit();
聽聽聽聽聽聽聽聽聽聽聽聽
//8聽璁劇疆璇彞鎵ц鐨勬爣璁?/span>
聽聽聽聽聽聽聽聽聽聽聽聽isSuccess聽=true;
聽聽聽聽聽聽聽聽}聽
catch聽(SQLException聽e)聽{
聽聽聽聽聽聽聽聽聽聽聽聽
//鍥炴粴
聽聽聽聽聽聽聽聽聽聽聽聽MyDBUtil.rollBack(conn);
聽聽聽聽聽聽聽聽聽聽聽聽
thrownew聽MySQLException(e);
聽聽聽聽聽聽聽聽}聽
finally聽{
聽聽聽聽聽聽聽聽聽聽聽聽
//鍏抽棴鎵撳紑鐨勬搷浣?/span>
聽聽聽聽聽聽聽聽聽聽聽聽MyDBUtil.close(conn,聽pstmt);
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽
return聽isSuccess;
聽聽聽聽}

鎵ц鏌ヨ
聽1/**
聽2聽聽聽聽聽*聽鎵ц鏌ヨ鏁版嵁搴撶殑璇彞;
聽9聽聽聽聽聽*
10聽聽聽聽聽*聽@return
11聽聽聽聽聽*/
12聽聽聽聽public聽Object聽executeQuery(String聽sql,聽Object[]聽params)聽{
13聽聽聽聽聽聽聽聽Connection聽conn聽=null;
14聽聽聽聽聽聽聽聽PreparedStatement聽pstmt聽=null;
15聽聽聽聽聽聽聽聽ResultSet聽rs聽=null;
16聽聽聽聽聽聽聽聽try聽{
17聽聽聽聽聽聽聽聽聽聽聽聽//1聽鑾峰緱榪炴帴
18聽聽聽聽聽聽聽聽聽聽聽聽conn聽=聽MyDBConnection.getInstance().getConnection();
19聽聽聽聽聽聽聽聽聽聽聽聽//2聽璁劇疆鎻愪氦鏂瑰紡涓虹▼搴忔帶鍒?/span>
20聽聽聽聽聽聽聽聽聽聽聽聽conn.setAutoCommit(false);
21聽聽聽聽聽聽聽聽聽聽聽聽//3聽鑾峰緱璇彞瀵硅薄
22聽聽聽聽聽聽聽聽聽聽聽聽pstmt聽=聽conn.prepareStatement(sql,聽ResultSet.TYPE_SCROLL_SENSITIVE,聽ResultSet.CONCUR_UPDATABLE);
23聽聽聽聽聽聽聽聽聽聽聽聽//4聽璁劇疆SQL璇彞鐨勫弬鏁?/span>
24聽聽聽聽聽聽聽聽聽聽聽聽if聽(null!=聽params聽&&0<聽params.length)聽{
25聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽setParams(pstmt,聽params);
26聽聽聽聽聽聽聽聽聽聽聽聽}
27聽聽聽聽聽聽聽聽聽聽聽聽//5聽鎵撳嵃SQL璇彞
28聽聽聽聽聽聽聽聽聽聽聽聽if聽(MyDBConstants.showSQL)聽{
29聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽getPreparedSQL(sql,聽params);
30聽聽聽聽聽聽聽聽聽聽聽聽}
31聽聽聽聽聽聽聽聽聽聽聽聽//6聽鎵ц璇彞
32聽聽聽聽聽聽聽聽聽聽聽聽rs聽=聽pstmt.executeQuery();
33
34聽聽聽聽聽聽聽聽聽聽聽聽//9聽紼嬪簭鎻愪氦
35聽聽聽聽聽聽聽聽聽聽聽聽conn.commit();
36
37聽聽聽聽聽聽聽聽聽聽聽聽//10聽鑾峰緱璁板綍
38聽聽聽聽聽聽聽聽聽聽聽聽Object聽vo聽=new聽Object();
39聽聽聽聽聽聽聽聽聽聽聽聽if聽(null!=聽rs聽&&聽rs.next())聽{
40聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽vo聽=聽rs2vo(rs);
41聽聽聽聽聽聽聽聽聽聽聽聽}
42//聽聽聽聽聽聽聽聽聽聽聽聽return聽results;
43聽聽聽聽聽聽聽聽聽聽聽聽return聽vo;
44聽聽聽聽聽聽聽聽}聽catch聽(SQLException聽e)聽{
45聽聽聽聽聽聽聽聽聽聽聽聽//鍥炴粴
46聽聽聽聽聽聽聽聽聽聽聽聽MyDBUtil.rollBack(conn);
47聽聽聽聽聽聽聽聽聽聽聽聽thrownew聽MySQLException(e);
48聽聽聽聽聽聽聽聽}聽finally聽{
49聽聽聽聽聽聽聽聽聽聽聽聽//鍏抽棴鎵撳紑鐨勬搷浣?/span>
50聽聽聽聽聽聽聽聽聽聽聽聽MyDBUtil.close(conn,聽pstmt,聽rs);
51聽聽聽聽聽聽聽聽}
52聽聽聽聽}

鐪嬪埌getPreparedSQL(sql,聽params)浜嗕箞錛?榪欎釜鍦版柟灝辨槸瑕佸疄鐜版垜浠鏈熸晥鏋滅殑鍦版柟錛?br />
寰楀埌PrepareStatement鏈緇堟墽琛岀殑sql璇彞鐨勬柟娉?/span>

鐒跺悗杞繪澗鏍稿疄浣犵殑鎺у埗鍙版垨鑰呮棩蹇楁枃浠跺惂......


]]>
甯哥敤鏁版嵁搴揓DBC榪炴帴鍐欐硶錛堣漿錛?/title><link>http://www.tkk7.com/liaojiyong/archive/2006/07/24/59829.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Mon, 24 Jul 2006 07:49:00 GMT</pubDate><guid>http://www.tkk7.com/liaojiyong/archive/2006/07/24/59829.html</guid><wfw:comment>http://www.tkk7.com/liaojiyong/comments/59829.html</wfw:comment><comments>http://www.tkk7.com/liaojiyong/archive/2006/07/24/59829.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/liaojiyong/comments/commentRss/59829.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/liaojiyong/services/trackbacks/59829.html</trackback:ping><description><![CDATA[ <h1 class="block_title"> <a id="viewpost1_TitleUrl" href="/airdream/archive/2006/06/24/54834.html"> </a>聽</h1> <div id="nfhnlr5" class="post"> <div id="313335n" class="postcontent">涓轟簡鏂逛究澶у鏌ユ壘錛屾暣鐞嗗唴瀹瑰涓嬶細<br />1. MySQL(http://www.mysql.com)mm.mysql-2.0.2-bin.jar<br />Class.forName( "org.gjt.mm.mysql.Driver" );<br />cn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", sUsr, sPwd ); <p>2. PostgreSQL(http://www.de.postgresql.org)pgjdbc2.jar<br />Class.forName( "org.postgresql.Driver" );<br />cn = DriverManager.getConnection( "jdbc:postgresql://MyDbComputerNameOrIP/myDatabaseName", sUsr, sPwd ); </p><p>3. Oracle(http://www.oracle.com/ip/deploy/database/oracle9i/)classes12.zip<br />Class.forName( "oracle.jdbc.driver.OracleDriver" );<br />cn = DriverManager.getConnection( "jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd );<br />4. Sybase(http://jtds.sourceforge.net)jconn2.jar </p><p>Class.forName( "com.sybase.jdbc2.jdbc.SybDriver" );<br />cn = DriverManager.getConnection( "jdbc:sybase:Tds:MyDbComputerNameOrIP:2638", sUsr, sPwd );<br />//(Default-Username/Password: "dba"/"sql") </p><p>5. Microsoft SQLServer(http://jtds.sourceforge.net)<br />Class.forName( "net.sourceforge.jtds.jdbc.Driver" );<br />cn = DriverManager.getConnection( "jdbc:jtds:sqlserver://MyDbComputerNameOrIP:1433/master", sUsr, sPwd ); </p><p>6. Microsoft SQLServer(http://www.microsoft.com)<br />Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver" );<br />cn = DriverManager.getConnection( "jdbc:microsoft:sqlserver://MyDbComputerNameOrIP:1433;databaseName=master", sUsr, sPwd ); </p><p>7. ODBC<br />Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );<br />Connection cn = DriverManager.getConnection( "jdbc:odbc:" + sDsn, sUsr, sPwd ); </p><p>8.DB2(鏂版坊鍔?<br />Class.forName("com.ibm.db2.jdbc.net.DB2Driver");<br />String url="jdbc:db2://192.9.200.108:6789/SAMPLE"<br />cn = DriverManager.getConnection( url, sUsr, sPwd ); </p><p>9.Microsoft SQL Server series (6.5, 7.x and 2000) and Sybase 10 </p><p>JDBC Name: jTDS<br />URL: http://jtds.sourceforge.net/<br />Version: 0.5.1<br />Download URL: http://sourceforge.net/project/showfiles.php?group_id=33291 </p><p>璇硶:<br />Class.forName("net.sourceforge.jtds.jdbc.Driver ");<br />Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://host:port/database","user","password");<br />or<br />Connection con = DriverManager.getConnection("jdbc:jtds:sybase://host:port/database","user","password"); </p><p>10.Postgresql<br />JDBC Name: PostgreSQL JDBC<br />URL: http://jdbc.postgresql.org/<br />Version: 7.3.3 build 110<br />Download URL: http://jdbc.postgresql.org/download.html<br />璇硶:<br />Class.forName("org.postgresql.Driver"); <br />Connection con=DriverManager.getConnection("jdbc:postgresql://host:port/database","user","password"); </p><p>11.IBM AS400涓繪満鍦ㄧ敤鐨凧DBC璇硶<br />鏈夎V4R4浠ヤ笂鐗堟湰鐨凜lient Access Express<br />鍙互鍦–:\Program Files\IBM\Client Access\jt400\lib<br />鎵懼埌 driver 妗f jt400.zip錛屽茍鏇存敼鎵╁睍鍚嶆垚涓?jt400.jar<br />璇硶:<br />java.sql.DriverManager.registerDriver (new com.ibm.as400.access.AS400JDBCDriver ());<br />Class.forName("com.ibm.as400.access.AS400JDBCConnection");<br />con = DriverManager.getConnection("jdbc:as400://IP","user","password"); </p><p>12.informix<br />Class.forName("com.informix.jdbc.IfxDriver").newInstance(); <br />String url = <br />"jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myserver; <br />user=testuser;password=testpassword";<br />Lib錛歫dbcdrv.zip<br /><br />Class.forName( "com.sybase.jdbc.SybDriver" )<br />url="jdbc:sybase:Tds:127.0.0.1:2638/asademo";<br />SybConnection connection= (SybConnection)DriverManager.getConnection(url,"dba","sql"); </p><p>13.SAP DB<br />Class.forName ("com.sap.dbtech.jdbc.DriverSapDB");<br />java.sql.Connection connection = java.sql.DriverManager.getConnection ( "jdbc:sapdb://" + host + "/" + database_name,user_name, password) </p><p>14.InterBase<br />String url = "jdbc:interbase://localhost/e:/testbed/database/employee.gdb";<br />Class.forName("interbase.interclient.Driver");<br />//Driver d = new interbase.interclient.Driver (); /* this will also work if you do not want the line above */<br />Connection conn = DriverManager.getConnection( url, "sysdba", "masterkey" ); </p><p>15.HSqlDB<br />url: http://hsqldb.sourceforge.net/<br />driver: org.hsqldb.jdbcDriver<br />榪炴帴鏂瑰紡鏈?縐嶏紝鍒嗗埆涓猴細<br />con-str錛堝唴瀛橈級: jdbc:hsqldb.<br />con-str錛堟湰鍦幫級: jdbc:hsqldb:/path/to/the/db/dir<br />con-str錛坔ttp錛? jdbc:hsqldb:http://dbsrv<br />con-str錛坔sql錛? jdbc:hsqldb:hsql://dbsrv</p></div> </div> <img src ="http://www.tkk7.com/liaojiyong/aggbug/59829.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/liaojiyong/" target="_blank">liaojiyong</a> 2006-07-24 15:49 <a href="http://www.tkk7.com/liaojiyong/archive/2006/07/24/59829.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍏崇郴鏁版嵁搴撹璁$悊璁猴紞錛?gt;3NFhttp://www.tkk7.com/liaojiyong/archive/2006/05/23/47597.htmlliaojiyongliaojiyongTue, 23 May 2006 02:44:00 GMThttp://www.tkk7.com/liaojiyong/archive/2006/05/23/47597.htmlhttp://www.tkk7.com/liaojiyong/comments/47597.htmlhttp://www.tkk7.com/liaojiyong/archive/2006/05/23/47597.html#Feedback0http://www.tkk7.com/liaojiyong/comments/commentRss/47597.htmlhttp://www.tkk7.com/liaojiyong/services/trackbacks/47597.html闃呰鍏ㄦ枃

]]>
主站蜘蛛池模板: aaa毛片免费观看| 亚洲免费视频一区二区三区| 最近中文字幕免费mv在线视频 | 又粗又大又猛又爽免费视频| 亚洲大码熟女在线观看| 免费爱爱的视频太爽了| 亚洲国产成人精品无码区花野真一 | 亚洲成a人片在线观看老师| 午夜亚洲国产精品福利| 亚洲国产一区二区视频网站| 国产福利在线观看永久免费| 亚洲精品国产精品乱码不卡√ | 免费黄色毛片视频| 免费国产va视频永久在线观看| 国产一级淫片免费播放电影 | 中文字幕免费在线观看| 亚洲а∨天堂久久精品9966| 日韩在线免费看网站| 免费无码一区二区| 久久精品国产精品亚洲蜜月| 精品无码人妻一区二区免费蜜桃| 亚洲免费网站在线观看| 小小影视日本动漫观看免费| 国产精品免费久久久久电影网| 亚洲AV福利天堂一区二区三 | 国产成人AV片无码免费| 亚洲福利一区二区三区| 成人性生交大片免费看午夜a | 美女免费视频一区二区三区| 亚洲中文字幕无码不卡电影| 免费观看国产网址你懂的| 激情小说亚洲色图| 久久亚洲精品中文字幕无码| AA免费观看的1000部电影| 人人鲁免费播放视频人人香蕉| 亚洲日本中文字幕区| 国产伦精品一区二区三区免费下载 | 国产成人综合久久精品免费| 97在线视频免费公开视频| 亚洲中字慕日产2021| 中文字幕亚洲一区二区三区|