;
帖子
3919 
精华
积分
11710 
鱼币
0 ¥ 
来自
大连 
在线时间
1858 小时 
注册时间
2007-6-11 
最后登录
2009-10-20 

贴图大师勋章新人进步勋章宣传大使勋章论坛元老勋章

3
发表于 2009-1-5 19:48 | 只看该作者
杩愮敤 ADO.NET 瀵硅薄浼樺寲鏁版嵁鏌ヨ浠g爜 - 缂栫▼搴 - Powered by SupeSite

浣犵殑浣嶇疆锛缂栫▼搴 >> 璧勮 >> VB.NET >> ado.net >> 璇︾粏鍐呭 鍦ㄧ嚎鎶曠ǹ

杩愮敤 ADO.NET 瀵硅薄浼樺寲鏁版嵁鏌ヨ浠g爜

鍙戝竷: 2008-6-26 22:33 |  浣滆: admin |   鏌ョ湅: 15娆

姣棤鐤戦棶锛孉DO.NET 鍚戜汉浠彁渚涗簡涓绉嶅姛鑳藉己澶с佷豢鐪熸暟鎹簱鐨勫璞℃ā鍨嬶紝瀹冨彲浠ュ皢鏁版嵁璁板綍淇濆瓨鍒板唴瀛樹腑銆傚挨鍏舵槸ADO.net 鐨 DataSet 绫伙紝瀹冧笉浣嗗湪鍔熻兘涓婄浉褰撲簬鏁版嵁搴撹〃鐨勯泦涓瓨鍌ㄥ櫒(central repository)锛岃屼笖鏀寔琛ㄩ棿鐨勫悇绉嶇害鏉熷拰閫昏緫鍏崇郴銆傝繘涓姝ヨ鏉ワ紝DataSet 瀵硅薄鍏跺疄鏄竴绉嶇绾挎暟鎹鍣ㄣ

涔嶄竴鐪嬶紝鍙鎶 DataSet 绫荤殑鎵鏈夌壒鎬ц仈鍚堣捣鏉ワ紝灏辫兘娑堥櫎 SQL 鏌ヨ鍛戒护涓殑澶嶆潅瀛愬彞锛屾瘮濡傞偅浜涙硾婊ユ垚鐏句笖灞傚眰宓屽鐨 INNER JOIN瀛愬彞鎴栬 GROUP BY 瀛愬彞绛夈傚鏉傜殑瀛愬彞鍙互鍒嗚В鎴愪袱涓垨鏇村涓浉浜掔嫭绔嬬殑绠鍗曞瓙鍙ワ紝鑰屽皢姣忎釜绠鍗曞瓙鍙ョ殑鏌ヨ缁撴灉鍒嗗埆淇濆瓨鍦ㄤ笉鍚岀殑 DataTable 瀵硅薄涓紱浠ュ悗鍙鍒嗘瀽杩欎簺鍐呭瓨鏁版嵁涔嬮棿鐨勭害鏉熷拰閫昏緫鍏崇郴锛屽氨鑳介噸寤哄師鍏堣〃涔嬮棿蹇呰鐨勨滃弬鐓у畬鏁存р(referential integrity)銆

涓句釜渚嬪瓙锛氫綘鍙互鎶婂鎴(Customers)琛ㄤ笌璁㈠崟(Orders)琛ㄥ垎鍒繚瀛樺埌涓や釜涓嶅悓鐨 DataTable 瀵硅薄涓紝鐒跺悗閫氳繃 DataRelation 瀵硅薄杩涜缁戝畾 (bind) 銆傝繖鏍, SQL Server (鎴栧叾瀹 DBMS 绯荤粺) 灏卞厤闄や簡 INNER JOIN 瀛愬彞甯︽潵鐨勬矇閲嶈礋鎷咃紱鏇撮噸瑕佺殑鏄紝缃戠粶浼犺緭璐熻嵎涔熷洜姝よ屽ぇ澶у噺杞汇傝薄杩欐牱绠鍖 SQL 鏌ヨ鐨勬柟妗堝浐鐒惰涔嬫湁鏁堬紝鍗村苟涓嶄竴瀹氭绘槸鏈浣抽夋嫨锛屽挨鍏舵槸褰撲綘鐨勬暟鎹簱瑙勬ā搴炲ぇ鑰屼笖鏇存柊棰戠箒鏃躲

鏈枃灏嗕负澶у浠嬬粛鍙︿竴绉嶇敤浜庣畝鍖 SQL 鏌ヨ鐨勬妧鏈紝瀹冨厖鍒嗗埄鐢 ADO.NET 鐨勫唴瀛樻暟鎹璞″噺杞讳簡鐢ㄦ埛鍜 DBMS 绯荤粺鐨勮礋鎷呫

鍒嗚В SQL 鏌ヨ鍛戒护

璁稿鏈夊叧 ADO.NET 鐨勪功绫嶏紝姣斿 David Sceppa 鐨勫ぇ浣溿奝rogramming ADO.NET Core Reference銆(寰蒋鍑虹増绀)锛岄兘寤鸿鎶婂鏉傜殑 SQL 鏌ヨ鍛戒护鍒嗚В鎴愯嫢骞茬畝鍗曠殑瀛愭煡璇紝鐒跺悗鎶婂悇涓瓙鏌ヨ鐨勮繑鍥炵粨鏋滃垎鍒繚瀛樺埌鍚屼竴涓 DataSet 瀹瑰櫒鍐呴儴鐨勮嫢骞蹭釜 DataTable 瀵硅薄涓傝鐪嬩竴涓疄渚嬨

鍋囪浣犻渶瑕佽幏鍙栦竴浜涘鎴疯鍗曚俊鎭紝瑕佹眰璁㈠崟鏄彁浜や簬鎸囧畾骞翠唤鑰屼笖鎸夊鎴疯繘琛屽垎缁勶紝杩樿姹傝鍗曚腑鑷冲皯鍖呭惈 30 浠跺晢鍝併傚悓鏃讹紝浣犺繕甯屾湜鑾峰彇姣忎釜璁㈠崟鐨勬彁浜よ(employee)鍚嶅瓧浠ュ強瀹㈡埛(customer)鐨勫叕鍙稿悕銆備綘鍙互鐢ㄤ笅鍒 SQL 鏌ヨ璇彞鏉ュ疄鐜板畠锛

DECLARE @TheYear int

SET @TheYear = 1997

SELECT o.customerid, od.orderid, o.orderdate, o.shippeddate,

SUM(od.quantity*od.unitprice) AS price,

c.companyname, e.lastname FROM Orders AS o

INNER JOIN Customers AS c ON c.customerid=o.customerid

INNER JOIN Employees AS e ON e.employeeid=o.employeeid

INNER JOIN [Order Details] AS od ON o.orderid=od.orderid

WHERE Year(o.orderdate) = @TheYear AND od.orderid=o.orderid

GROUP BY o.customerid, c.companyname, od.orderid,

o.orderdate, o.shippeddate, e.lastname

HAVING SUM(od.quantity) >30

ORDER BY o.customerid

鏆備笖鎶涘紑浣犳墍鐢ㄧ殑 ADO 鎴栬 ADO.NET鍚с傜敤鏈鍘熷鐨勫懡浠ゆ彁浜ゆ柟寮忔墽琛屼笂杩 SQL 鏌ヨ锛屽彲浠ョ湅鍒板鍥 1 鎵绀虹殑缁撴灉闆嗭細

鍥 1. 绗竴涓 SQL 鏌ヨ鍛戒护鐨勮緭鍑虹粨鏋滐紝鐢 SQL Server Query Analyzer 鐢熸垚骞舵樉绀恒

鍦ㄦ湰娆℃煡璇腑锛屼互涓鏉″瓙鍙ヤ负鏍稿績锛岃屽彟澶栦袱鏉 INNER JOIN 瀛愬彞璧疯緟鍔╀綔鐢ㄣ傛牳蹇冨瓙鍙ョ殑鍔熻兘鏄粠鏁版嵁搴撲腑鏌ヨ鎵鏈夋彁浜や簬鎸囧畾骞翠唤銆佽嚦灏戝寘鍚 30 浠跺晢鍝佺殑璁㈠崟銆傛牳蹇冨瓙鍙ュ涓嬶細

SELECT o.customerid, o.orderid, o.orderdate,

o.shippeddate, SUM(od.quantity*od.unitprice) AS price, o.employeeid

FROM orders AS o

INNER JOIN [Order Details] AS od ON o.orderid=od.orderid

WHERE Year(o.orderdate) = @TheYear AND od.orderid=o.orderid

GROUP BY o.customerid, o.orderid, o.orderdate, o.shippeddate,

o.employeeid

HAVING SUM(od.quantity) >30

ORDER BY o.customerid

鍦ㄨ繑鍥炵粨鏋滈泦涓紝瀹㈡埛鍜屾彁浜よ呭潎鐢 ID 鏉ヨ〃绀恒傜劧鑰岋紝鏈緥闇瑕佺殑鏄鎴风殑鍏徃鍚(compayname)鍜屾彁浜よ呯殑鍚嶅瓧(lastname)銆傛湯灏剧殑 ORDER BY o.customerid 璇彞鏄惧緱鐗瑰埆绠鍗曪紝鍙槸鍏跺姛鑳藉嵈寰堥噸瑕侊細鐢变簬瀹㈡埛鍏徃鍚嶅拰鎻愪氦鑰呭悕瀛楁墍鍚殑瀛楃杈冨锛屼娇鐢ㄨ璇彞灏辫兘閬垮厤瀹冧滑鐨勯噸澶嶅嚭鐜帮紝浠庤屽緱鍒版洿绱у噾鐨勭粨鏋滈泦銆

缁间笂鎵杩帮紝鏁翠釜 SQL 鏌ヨ鍙互琚垎瑙f垚 3 鏉″瓙鏌ヨ鍛戒护鈥曗 1 鏉℃牳蹇冨瓙鏌ヨ锛岀敤浜庤幏鍙栬鍗曡褰曪紱2 鏉¤緟鍔╁瓙鏌ヨ锛岀敤浜庡缓绔嬫彁浜よ匢D - 鎻愪氦鑰呭悕瀛楀拰瀹㈡埛ID - 瀹㈡埛鍏徃鍚嶄袱涓鐓ц〃锛屽嵆锛

SELECT employeeid, lastname FROM Employees

SELECT customerid, companyname FROM Customers

鎵撳嵃 | 鏀惰棌姝ら〉 |  鎺ㄨ崘缁欏ソ鍙 | 涓炬姤
涓婁竴绡 涓嬩竴绡
 

璇勫垎锛0

鍙戣〃璇勮
鏌ョ湅鍏ㄩ儴鍥炲銆愬凡鏈0浣嶇綉鍙嬪彂琛ㄤ簡鐪嬫硶銆