ÕÒÂÛÎÄÍø > ¼ÆËã»úÂÛÎÄ > ¼ÆËã»úÓ¦Óà >

ʹÓÃOLE DBºÍADOµ÷Ó÷µ»Ø¼Ç¼¼¯µÄOracle´æ´¢¹ý³Ì(1)

ÕªÒª  OLE DBÊǽ¨Á¢ÔÚODBC³É¹¦»ù´¡ÉϵÄÒ»ÖÖ¿ª·Å¹æ·¶,ËüΪ·ÃÎʺͲÙ×ݲ»Í¬ÀàÐÍÊý¾ÝÌṩ¿ª·ÅµÄ±ê×¼¡£ADOÊÇOLD DBµÄÒ»¸öÏû·ÑÕߣ¬ËüÌṩÁ˶ÔOLE DBÊý¾ÝÔ´Ó¦Óü¶µÄ·ÃÎʹ¦ÄÜ¡£ÔÚÓ¦ÓóÌÐòÖÐʹÓÃOLE DBºÍADO£¬¿ÉÒÔ¸ßЧµØµ÷Ó÷µ»Ø¼Ç¼¼¯µÄOracle´æ´¢¹ý³Ì¡£

¹Ø¼ü×Ö   OLE DB    ADO     ´æ´¢¹ý³Ì   ¼Ç¼¼¯

1      ǰÑÔ
    ÔÚ»ùÓÚOracleÊý¾Ý¿âµÄADOÓ¦ÓóÌÐòµÄ¿ª·¢¹ý³ÌÖУ¬ÎªÁËÌá¸ßÖ´ÐÐËٶȺͽµµÍÍøÂçÁ÷Á¿£¬ÍùÍùÒªÔÚÓ¦ÓóÌÐòÖе÷ÓÃOracleÊý¾Ý¿â·þÎñÆ÷¶ËµÄ´æ´¢¹ý³Ì¡£ÓеĴ洢¹ý³ÌÐèÒª·µ»Ø¶àÐеļǼ¼¯¡£ÕâÖÖÇé¿öÏ£¬ÔÚÓ¦ÓóÌÐòÖе÷Ó÷µ»Ø¼Ç¼¼¯µÄ´æ´¢¹ý³Ì´æÔÚÒ»¶¨µÄÄѶȡ£±¾ÎĽéÉÜÈçºÎʹÓÃOLE DBºÍADOµ÷Ó÷µ»Ø¼Ç¼¼¯µÄOracle´æ´¢¹ý³Ì¡£
2       OLE DBºÍADOµÄ¹ØÏµ
2.1 OLE DB¼ò½é
OLE DB½¨Á¢ÔÚODBC³É¹¦»ù´¡ÉϵĿª·ÅµÄ¹æ·¶,ËüΪ·ÃÎʺͲÙ×ݲ»Í¬ÀàÐÍÊý¾ÝÌṩ¿ª·ÅµÄ±ê×¼¡£OLE DB¶¨ÒåÁËÒ»¸öCOM½Ó¿Ú¼¯ºÏ£¬Ëü·â×°Á˸÷ÖÖÊý¾Ý¿â¹ÜÀíϵͳ·þÎñ¡£ÕâЩ½Ó¿ÚÔÊÐí´´½¨ÊµÏÖÕâЩ·þÎñµÄÈí¼þ×é¼þ¡£OLE DB×é¼þ°üÀ¨Êý¾ÝÌṩÕߣ¨´æ´¢ºÍ·¢²¼Êý¾Ý£©¡¢Êý¾ÝÏû·ÑÕߣ¨Ê¹ÓÃÊý¾Ý£©ºÍ·þÎñ×é¼þ£¨´¦ÀíºÍ´«ÊäÊý¾Ý£©¡£
OLE DBµÄÉè¼ÆÊÇÒÔÏû·ÑÕߺÍÌṩÕ߸ÅÄîΪÖÐÐÄ¡£OLE DBÏû·ÑÕß±íʾ´«Í³µÄ¿Í»§·½£¬ÌṩÕß½«Êý¾ÝÒÔ±í¸ñÐÎʽ´«µÝ¸øÏû·ÑÕß¡£OLE DBµÄOracleÌṩÕß(OraOLEDB)¿ÉʹOLE DBÏû·ÑÕ߸ßЧµØ·ÃÎÊOracleÊý¾ÝÔ´¡£Í¼1¸ø³öOLE DBµÄϵͳͼʾ¡£OLE DBÊý¾ÝÌṩÕß½«Êý¾Ý´ÓÊý¾ÝÔ´´«µÝ¸øÏû·ÑÕß¡£ÔÚ±ê×¼½Ó¿ÚµÄ»ù´¡ÉÏ£¬OLE DBÏû·ÑÕßÄܹ»·ÃÎÊÀ´×ÔÌṩÕßµÄÊý¾Ý¡£ÒòΪÓÐCOM×é¼þ£¬Ïû·ÑÕß¿ÉÒÔÓÃÈκÎÖ§³ÖCOMµÄ±à³ÌÓïÑÔ·ÃÎÊÊý¾Ý¡£
 
2.2      ADO¶ÔÏóÄ£ÔÚADO¶ÔÏóÄ£ÐÍÖУ¬Connection¡¢CommandºÍRecordset¶ÔÏóÊÇÈý¸öÖ÷ÒªµÄ¶ÔÏó¡£Connection¶ÔÏó±íʾ¶ÔÔ¶³ÌÊý¾ÝµÄÁ¬½Ó¡£Connection¶ÔÏó¿ÉÓëCommand¶ÔÏó»òRecordset¶ÔÏó¹ØÁª¡£Command¶ÔÏó¶¨ÒåÁ˶ÔÊý¾ÝÔ´Ö´ÐеÄÖ¸¶¨ÃüÁî¡£Command¶ÔÏó¿ÉÒÔÓÃÀ´Ö´ÐÐÃüÁîºÍ²ÎÊý»¯µÄSQLÓï¾ä£¬¿ÉÒÔÓÃÓÚSQLÓï¾äºÍ·µ»Ø¼Ç¼¼¯µÄSQL²éѯ¡£Command¶ÔÏó¼È¿ÉÒÔʹÓÃÒ»¸ö»î¶¯µÄConnection¶ÔÏó£¬Ò²¿ÉÒÔ´´½¨Ëü×Ô¼ºµ½Ä¿±êÊý¾ÝÔ´µÄÁ¬½Ó¡£Command¶ÔÏó°üº¬Ò»¸öParameters¼¯ºÏ£¬Ôڸü¯ºÏÖÐÿһ¸öParameter¶ÔÏó±íʾCommand¶ÔÏóʹÓõIJÎÊý¡£Command¶ÔÏóÖ´ÐвÎÊý»¯µÄSQLÓï¾äʱ£¬Ã¿Ò»¸öParameter¶ÔÏó±íʾSQLÓï¾äÖеÄÒ»¸ö²ÎÊý¡£Recordset¶ÔÏó±íʾµÄÀ´×Ô»ù±¾±í»òÃüÁîÖ´Ðнá¹ûµÄ¼Ç¼ȫ¼¯¡£Recordset¶ÔÏó¼È¿ÉÒÔʹÓÃÒ»¸ö»î¶¯µÄConnection¶ÔÏó£¬Ò²¿ÉÒÔ´´½¨Ëü×Ô¼ºµ½Ä¿±êÊý¾ÝÔ´µÄÁ¬½Ó¡£Recordset¶ÔÏóÔÊÐí²éѯºÍÐÞ¸ÄÊý¾Ý¡£Ã¿Ò»¸öRecordset°üº¬Ò»¸öField¶ÔÏ󼯺ϣ¬ÆäÖУ¬Ã¿¸öField¶ÔÏó±íʾRecordsetÖÐÒ»¸öÊý¾ÝÁС£
2.3      ADOºÍOLE DBµÄ¹ØÏµ
OLE DBÊÇϵͳ¼¶±à³Ì½Ó¿Ú£¬ADOÊÇÓ¦ÓÃÈí¼þ¼¶±à³Ì½Ó¿Ú¡£ADOÊÇOLE DBµÄÒ»¸öÏû·ÑÕߣ¬ËüÌṩÁ˶ÔOLE DBÊý¾ÝÔ´Ó¦Óü¶µÄ·ÃÎʹ¦ÄÜ¡£ADOΪOLE DBÌṩÁËÒ»¸öÒ×ÓÚʹÓõÄÓ¦Óü¶½Ó¿Ú¡£ADOÔÊÐíÓû§±àдͨ¹ýOLE DBÌṩÕß¶ÔÊý¾Ý¿â·þÎñÆ÷ÖеÄÊý¾Ý½øÐзÃÎʺͲÙ×÷µÄÓ¦ÓóÌÐò¡£ÆäÖ÷ÒªµÄÓŵãÊÇÒ×ÓÚʹÓᢸßËÙ¶È¡¢µÍÄÚ´æºÍÕ¼ÓýÏÉٵĴÅÅ̿ռ䡣ADOºÍOLE DBµÄ¹ØÏµÈçͼ2Ëùʾ£º
 
3  OracleÖзµ»Ø¼Ç¼¼¯µÄ´æ´¢¹ý³ÌµÄ¶¨Òå
    ÔÚOracle´æ´¢¹ý³ÌÖУ¬Í¨¹ý¶¨ÒåÀàÐÍΪREF CURSOR£¨ÓαêÖ¸Õ룩µÄ´«³ö²ÎÊý£¬¿ÉÒÔ·µ»Ø¼Ç¼¼¯¡£OLE DBÔÊÐíÏû·ÑÕßÖ´ÐдøREF CURSORÀàÐͲÎÊýµÄPL/SQL´æ´¢¹ý³Ì£¬»òÕßÖ´Ðзµ»ØREF CURSORµÄ´æ´¢º¯Êý¡£·µ»Ø¼Ç¼¼¯µÄ´æ´¢¹ý³Ì»òº¯Êý±ØÐ붨ÒåÔÚ³ÌÐò°üÀï¡£°üÊÇOracleÊý¾Ý¿âµÄÒ»ÖÖ¶ÔÏó£¬Ëü¿ÉÒÔ½«Êý¾ÝÀàÐÍ¡¢´æ´¢¹ý³Ì¡¢º¯Êý¡¢±äÁ¿ºÍ³£Á¿·â×°ÔÚÒ»Æð¡£°üÔڽṹÉÏ·ÖΪ°üÍ·ºÍ°üÌåÁ½²¿·Ö£¬ÕâÁ½²¿·ÖÒª·Ö±ð½¨Á¢¡£°üÍ·ÓÃÀ´¶¨Òå¿É±»ÍⲿÒýÓõÄÔªËØ£»°üÌ嶨Òåʵ¼Ê´úÂ롣ʹÓóÌÐò°ü¶¨Òå·µ»Ø¼Ç¼¼¯µÄ´æ´¢¹ý³Ìʱ£¬ÐèÒªÔÚ°üÍ·ÖÐÔ¤¶¨Òå×Ô¼ºµÄREF CURSORÀàÐÍ¡£ÔÚ³ÌÐò°üÌåÖУ¬´æ´¢¹ý³Ì»òº¯ÊýÐëʹÓÃÔ¤¶¨ÒåµÄÓαêÀàÐÍ¡£ÁíÍ⣬ÔÚÒ»¸ö´æ´¢¹ý³Ì»òº¯ÊýÖУ¬¿ÉÒÔ¶¨Òå¶à¸öREF CURSORÀàÐ͵IJÎÊýÒÔ·µ»Ø¶à¸ö¼Ç¼¼¯¡£
ÒÔÏÂÒÔÖ°¹¤±íempΪÀý£¬½éÉÜÈçºÎ¶¨Òå·µ»Ø¼Ç¼¼¯µÄOracle´æ´¢¹ý³Ì£¬emp±íµÄ¶¨ÒåÈçÏ£º
CREATE TABLE emp(
empno     NUMBER(4) NOT NULL,  --Ö°¹¤±àºÅ
ename     VARCHAR2(10),        --Ö°¹¤ÐÕÃû
hiredate  DATE,                --¹ÍÓ¶ÈÕÆÚ
sal       NUMBER(7,2),         --¹¤×Ê
deptno    NUMBER(2))£»         --ËùÊô²¿ÃűàºÅ
ÏÂÃæ¸ø³ö·µ»Ø¼Ç¼¼¯µÄOracle´æ´¢¹ý³ÌºÍ´æ´¢º¯ÊýµÄʾÀý³ÌÐò°üÍ·ºÍ°üÌ壬ÆäÖд洢¹ý³ÌGetEmpRecordsº¬ÓÐÁ½¸öREF CURSORÀàÐ͵Ĵ«³ö²ÎÊý£¬·µ»ØÁ½¸ö¼Ç¼¼¯£¬´æ´¢º¯ÊýGetDeptµÄ·µ»ØÖµÀàÐÍΪREF CURSOR£¬·µ»ØÒ»¸ö¼Ç¼¼¯¡£
--¶¨ÒåÒ»¸öÃûΪEmployeesµÄ³ÌÐò°üÍ·
CREATE OR REPLACE PACKAGE Employees AS         
  TYPE empcur IS REF CURSOR;                  
  --empcurΪ×Ô¶¨ÒåREF CURSORÀàÐÍ
--ÉùÃ÷Ò»¸ö´æ´¢¹ý³ÌGetEmpRecords
  PROCEDURE GetEmpRecords(p_cursor OUT empcur,
                          q_cursor OUT empcur,
                          indeptno IN NUMBER,
                          p_errorcode OUT NUMBER);
--ÉùÃ÷Ò»¸ö´æ´¢º¯ÊýGetDept
  FUNCTION GetDept(inempno IN NUMBER,
                   p_errorcode OUT NUMBER)          
  RETURN empcur;
END Employees; ---³ÌÐò°üÍ·¶¨Òå½áÊø                                  
--¶¨ÒåEmployeesµÄ³ÌÐò°üÌå
--¶¨Òå´æ´¢¹ý³ÌGetEmpRecords
CREATE OR REPLACE PACKAGE BODY Employees AS   PROCEDURE GetEmpRecords(p_cursor OUT empcur,  q_cursor OUT empcur,
              indeptno IN NUMBER, p_errorcode OUT NUMBER) IS 
BEGIN  
  p_errorcode := 0;     -- p_errorcodeΪ´íÎó±àºÅ
--´ò¿ªÓαê±äÁ¿p_cursor£¬²éѯËùÊô²¿ÃűàºÅ
--ΪindeptnoµÄËùÓÐÖ°¹¤µÄÐÅÏ¢
  OPEN p_cursor FOR   
    SELECT * FROM emp 
WHERE deptno = indeptno  ORDER BY empno; 
--´ò¿ªÓαê±äÁ¿q_cursor£¬²éѯËùÊô²¿ÃűàºÅ
--ΪindeptnoµÄËùÓÐÖ°¹¤µÄ±àºÅÐÅÏ¢
    OPEN q_cursor FOR  
SELECT empno  FROM emp  
WHERE deptno = indeptno   ORDER BY empno;
    EXCEPTION                  --ÀýÍâ´¦Àí
      WHEN OTHERS THEN 
      p_errorcode:= SQLCODE; 
 END GetEmpRecords; --´æ´¢¹ý³ÌGetEmpRecords¶¨Òå½áÊø
--¶¨Òå´æ´¢º¯ÊýGetDept
 FUNCTION GetDept(inempno IN NUMBER, 
                  p_errorcode OUT NUMBER)
 RETURN empcur IS  p_cursor empcur;  --·µ»ØÖµ
 BEGIN  
p_errorcode := 0; 
--²éѯְ¹¤±àºÅΪinempnoµÄÖ°¹¤µÄËùÊô²¿ÃűàºÅ
    OPEN p_cursor FOR 
SELECT deptno  FROM emp WHERE empno = inempno; 
    RETURN (p_cursor); 
    EXCEPTION 
      WHEN OTHERS THEN 
      p_errorcode:= SQLCODE;
 END GetDept;  
END Employees; --³ÌÐò°üÌ嶨Òå½áÊø

4      ÀûÓÃADOµ÷Ó÷µ»Ø¼Ç¼¼¯µÄOracle´æ´¢¹ý³Ì
ʹÓÃOLE DBºÍADOµ÷Ó÷µ»Ø¼Ç¼¼¯µÄOracle´æ´¢¹ý³Ì£¬ÔÚ¶¨ÒåADO¶ÔÏóºÍÉèÖòÎÊýʱ£¬ÐèÒªÌØ¶¨µÄÉèÖá£

¹²2Ò³: 1 [2] ÏÂÒ»Ò³


Ò£¸ÐÐÅÏ¢ÔÚ³ÇÊй滮ÖеÄÓ¦ÓÃÓëÕ¹Íû
CAI½ÌѧÈí¼þÖÐÊý¾ÝµÄ·Ö¸î
¹¤É̹ÜÀí | ¹¤¿ÆÂÛÎÄ | ²ÆÎñ¹ÜÀí | ¹ÜÀíѧ | ¹«¹²¹ÜÀí | ²ÆÕþ˰ÊÕ | ֤ȯ½ðÈÚ | »á¼ÆÉó¼Æ | ¼ÆËã»ú | ·¨ÂÉÂÛÎÄ | ҽҩѧ | ººÓïÑÔÎÄѧ
Éç»áÂÛÎÄ | ¹¤¿ÆÂÛÎÄ | Àí¿ÆÂÛÎÄ | ÎÄ»¯ÂÛÎÄ | ÒÕÊõÂÛÎÄ | ÎÄѧÂÛÎÄ | ÕÜѧÂÛÎÄ | ÕþÖÎÂÛÎÄ | Ó¢ÓïÂÛÎÄ | д×÷Ö¸µ¼ | ¼ÆËã»úÓ¦ÓÃ
www.zlunwen.com ÕÒÂÛÎÄÍø ® °æÈ¨ËùÓÐ ÍøÕ¾µØÍ¼