Êý¾Ý¿âÓ¦ÓóÌÐòÐè×¢ÒâµÄÎÊÌâ
×ܵÄÀ´Ëµ£¬Ìá¸ßÓ¦ÓóÌÐòÐÔÄܵÄ×îºÃµÄ·½·¨ÊÇ·¢ÏÖÓ¦ÓõÄÆ¿¾¶Ö®ËùÔÚ£¬ºÍÊý¾Ý¿â½øÐн»»¥µÄÐÔÄÜÎÞÒÉÊǾö¶¨Ó¦ÓóÌÐòÐÔÄܵÄÖØÒª»·½ÚÖ®Ò»¡£ÒòΪADOÊǵ±Ç°×îеĻùÓÚ×é¼þµÄÊý¾Ý¿â±à³ÌµÄ½Ó¿Ú£¬ÕâÀïÎÒÃÇÖ÷ÒªÌÖÂÛÓÃADO±à³ÌËùÐèҪעÒâµÄÎÊÌ⣬ÒòΪADOÊÇÒ»¸öºÍ±à³ÌÓïÑÔÎ޹صÄCOM×é¼þϵͳ£¬ËùÒÔÕâÀïÌÖÂÛµÄÒªµãÊÊÓÃÓÚËùÓеıà³ÌÓïÑԺͱà³Ì»·¾³£¬±ÈÈ磺VB¡¢VBScript¡¢VC¡¢JavaµÈµÈ¡£¡¡¡¡ÏÔʽµÄ¶¨Òå¶ÔÏó±äÁ¿µÄÀàÐÍ£º ¡¡¡¡Êµ¼ÊÉÏ£¬ÕâÌõ×¼Ôò²»½öÊÊÓÃÓÚADO±à³Ì£¬Ò²ÊÊÓÃÓÚÆäËûµÄCOM¶ÔÏóÏà¹ØµÄ±à³Ì£¬ÒòΪÈç¹ûÒ»¿ªÊ¼¾Í¶¨Òå±äÁ¿ÀàÐ͵Ļ°£¬±àÒëÆ÷ÔÚ±àÒëµÄʱºò¾Í¿ÉÒÔÖªµÀ±äÁ¿µÄÀàÐÍ£¬±àÒëÆ÷ʵ¼ÊÉϾͲÉÓÃvtableÆ«ÒƵķ½Ê½À´µÃµ½¾ßÌåµÄCOM¶ÔÏó°üº¬µÄ·½·¨µÄµØÖ·£¨ÕâÒ»µãºÍC++ÖеÄÐ麯ÊýµÄµØÖ·µÄ»ñÈ¡ÀàËÆ£©£¬µ«Èç¹ûÒ»¿ªÊ¼²»Ö¸¶¨±äÁ¿ÀàÐ͵Ļ°£¬±ÈÈç¼òµ¥µÄ²ÉÓÃÈçϵÄÓï¾ä£º ¡¡¡¡DIM myCon as Object ¡¡¡¡¡¡»òÕßÊÇ ¡¡¡¡DIM myCon ÄÇô±àÒëÆ÷ÔÚ±àÒëµÄʱºò¾Í²»Äܵõ½±äÁ¿µÄÀàÐÍ£¬¶øÖ»ÄÜÔÚÔËÐеÄʱºò¶¯Ì¬µÄµÃµ½·½·¨µÄÐÅÏ¢£¨Í¨¹ýʹÓýӿÚIDispatchµÄ·½·¨InvokeÀ´ÊµÏֵģ©£¬ÕâÑùΪÁ˵õ½·½·¨µÄµØÖ·ºÍÏà¹ØµÄ±äÁ¿Çé¿ö¾ÍÐèÒªÔÚÄÚ²¿½øÐÐÁ½´Îµ÷Óã¬ÎÞÒɾÍʹËٶȽµµÍ¡£ ¡¡¡¡µ±ä¯ÀÀ¼Ç¼µÄʱºò£¬°ó¶¨Áе½¾ßÌåµÄ×ֶζÔÏóÉÏÈ¥ ¡¡¡¡Õâ¸öÒâ˼¾ÍÊÇ˵ÔÚÒ»¿ªÊ¼µÄʱºòÎÒÃǾͽ¨Á¢¶Ô×ֶζÔÏóµÄÒýÓ㬱ÜÃâÔÚÿ´ÎµÃµ½¼Ç¼µÄʱºòÐèÒªÔÚRcordset::FieldsÖнøÐвéÕÒ¶øÔö¼ÓϵͳµÄ¿ªÏú¡£ ¡¡¡¡±ÈÈç¿ÉÒÔ²ÉÓÃÈçϵÄʾÀý´úÂëÐÎʽ£º ¡¡¡¡Private Sub TblBrowse_Click() ¡¡¡¡¡¡Dim fld1 As ADODB.Field ¡¡¡¡¡¡Dim fld2 As ADODB.Field ¡¡¡¡¡¡Dim rs As ADODB.Recordset ¡¡¡¡¡¡set rs=g_cn.execute(...) g_cnΪȫ¾Öadodb.connection¶ÔÏó ¡¡¡¡¡¡Set fld1 = rs.Fields("id") Êý¾Ý±íµÄ×ֶΠ¡¡¡¡¡¡Set fld2 = rs.Fields("name") Êý¾Ý±íµÄ×ֶΠ¡¡¡¡¡¡If rs.BOF = False Then ¡¡¡¡¡¡¡¡While rs.BOF = False ¡¡¡¡¡¡¡¡¡¡Debug.Print fld1.Value ¡¡¡¡¡¡¡¡¡¡Debug.Print fld2.Value ¡¡¡¡¡¡¡¡¡¡rs.MoveNext ¡¡¡¡¡¡¡¡Wend ¡¡¡¡¡¡End If ¡¡¡¡¡¡rs.Close ¡¡¡¡End Sub ¡¡¡¡¾¡Á¿²ÉÓÃSQLÓï¾äºÍ´æ´¢¹ý³Ì½øÐÐÊý¾Ý¸üР¡¡¡¡¾¡¹Ü²ÉÓÃRecordset¶ÔÏóÀ´¸üÐÂÊý¾ÝÊǷdz£·½±ãµÄ£¬µ«ÊÇËüµÄ¿ªÏúÒ²¸ü´ó£¬ËùÒÔÈç¹û¿ÉÄܵĻ°£¬¾ÍÒª²ÉÓÃSQLÓï¾äÀ´¸üÐÂÊý¾Ý¡£Ê¹Óô洢¹ý³Ì¶ø²»Êǵ¥Ò»µÄSQLÓï¾äÀ´»ñÈ¡ÐÅÏ¢¡£ÒòΪ´æ´¢¹ý³ÌÊÇÔÚ·þÎñÆ÷¶ËÖ´Ðеģ¬Ö»°Ñ½á¹û·µ»Øµ½¿Í»§¶Ë£¬ÕâÑùÒ»·½Ãæ¿ÉÒÔ½µµÍÍøÂç½øÐÐÊý¾Ý½»»¥µÄ¿ªÏú£¬ÁíÒ»·½Ãæʹϵͳ¸ü¼ÓÈÝÒ×ά»¤£¬²¢ÇÒ±£³ÖÊý¾ÝµÄÒ»ÖÂÐÔ¡£¶øÈç¹ûʹÓÃrecordsetÀ´µÃµ½½á¹ûµÄ»°£¬Í¨¹ýÊý¾ÝÔ´¶ÔÏ󷵻صIJéѯ¼¯²»½ö°üº¬ÁËÊý¾Ý£¬¶øÇÒÒ²°üº¬ÁËÔªÊý¾Ý£¨metadata£©,ÔÚÓÐЩʱºòÔªÊý¾Ý¿ÉÄܱÈÊý¾Ý±¾Éí»¹Òª´ó£¬ÕâÑùϵͳµÄ¿ªÏúÎÞÒÉÒ²Ôö¼ÓÁ˲»ÉÙ¡£ ¡¡¡¡Èç¹û±ØÐëҪʹÓÃÓαêµÄ»°£¬×îºÃʹÓü¯ºÏµÄ·½·¨¶Ôµ¥ÌõµÄSELECTÓï¾ä½øÐвÙ×÷ Recordset::get_CollectºÍRecordset::put_Collect·½·¨ÊÇRecordset ¶ÔÏóµÄ¿ì½Ý·½Ê½£¬¿ÉÒÔʹÄã¿ìËٵĵõ½Ò»¸ö×ֶεÄÖµ¶ø²»ÐèÒª»ñµÃ¹ØÓÚÒ»¸ö×ֶεÄÒýÓ᣿ÉÒԲο¼ÈçϵÄʾÀý´úÂ룺 ¡¡¡¡Sub Collect() ¡¡¡¡¡¡Dim rs As New Recordset ¡¡¡¡¡¡rs.ActiveConnection = "¡" ¡¡¡¡¡¡rs.Source = "Ò»ÌõSQL²éѯÓï¾ä" ¡¡¡¡¡¡rs.Open ¡¡¡¡¡¡Debug.Print rs.Collect(0), rs.Collect(1), rs.Collect(2) ¡¡¡¡¡¡Debug.Print rs!au_id, rs!au_fname, rs!au_lname ¡¡¡¡End Sub Ö»²éѯÄãËùÐèÒªµÄÊý¾Ý ¡¡¡¡¾¡¹ÜºÜ¶à¿ª·¢ÈËÔ±¶¼Ï°¹ß²ÉÓÃ"SELECT * FROM TBL"µÄģʽ½øÐвéѯ£¬µ«ÊÇΪÁËÌá¸ßϵͳµÄЧÂÊ£¬Èç¹ûÄãÖ»ÐèÒªÆäÖÐij¼¸¸ö×ֶεÄÖµµÄ»°£¬×îºÃ°ÑÕ⼸¸ö×Ö¶ÎÖ±½Óд³öÀ´£¬Í¬Ê±ÐèÒªÏÞ¶¨·µ»Ø¼Ç¼¼¯µÄ·¶Î§£¨Í¨¹ýWHERE×Ó¾ä½øÐÐÏÞ¶¨£© ¡¡¡¡ÕýÈ·Ñ¡ÔñÓαêµÄλÖá¢ÀàÐͺÍËø·½Ê½ ¡¡¡¡Èç¹ûÄãÖ»ÐèÒª°´Ë³Ðò¶ÁÈ¡¼Ç¼²¢ÇÒ²»ÐèÒª¹ö¶¯ºÍ¸üмǼµÄ»°£¬Ê¹Ó÷þÎñÆ÷¶ËÓα꣨adUseServer£©¡¢½öÏòÇ°Óαê(adOpenForwardOnly)ºÍ¶ÁËø(adLockReadOnly)¿ÉÒÔʹÄã»ñµÃ×îºÃµÄÐÔÄÜ¡£Èç¹ûÄãÐèÒª¹ö¶¯¼Ç¼µÄ»°£¬²ÉÓÿͻ§¶ËÓα꣨adUseServer£©»á±È²ÉÓ÷þÎñÆ÷¶ËÓαêËùµÃµ½µÄÐÔÄÜÒªºÃ£¬ADOϵͳĬÈÏÊDzÉÓ÷þÎñÆ÷¶ËÓαêÀàÐ͵ġ£µ±È»Èç¹ûÊý¾Ý¼¯ºÏÏ൱´óµÄ»°£¬²ÉÓ÷þÎñÆ÷¶ËÓαêµÄÐÔÄÜ»áºÃһЩ¡£Í¬Ê±ÐèҪעÒâµÄ»°£¬Èç¹û²ÉÓÿͻ§¶ËÓαêµÄ»°£¬×îºÃÖ»²ÉÓöÁ¼ÓËø£¨adLockReadOnly£©µÄËøÀàÐÍ,ÒòΪÈç¹ûÄãÐèÒª¸üÐÂÊý¾ÝµÄ»°£¬¿Í»§¶ËÓαêÒýÇæÐèÒªµÃµ½¶îÍâµÄÐÅÏ¢£¨ÔªÊý¾Ý£©£¬¶øÕâ¸öÐÅÏ¢µÄ»ñÈ¡ÊǷdz£°º¹óµÄ¡£ ¡¡¡¡µ÷Õû¼Ç¼¼¯¶ÔÏó£¨Recordset£©CacheSizeµÄÊôÐÔ ¡¡¡¡ADOʹÓüǼ¼¯¶ÔÏóµÄCacheSizeµÄÊôÐÔÀ´¾ö¶¨ÌáÈ¡ºÍ»º´æµÄ¼Ç¼µÄÊýÄ¿£¬µ±ÄãÔÚ»º´æµÄ·¶Î§ÄÚä¯ÀÀÊý¾ÝµÄ»°£¬ADO¾ÍÖ»´Ó»º´æÖÐÌáÈ¡Êý¾Ý¡£µ±ÄãÒªä¯ÀÀµÄÊý¾Ý³¬³ö»º´æµÄ·¶Î§µÄʱºò£¬ADO¾ÍÊÍ·Å»º´æ£¬ÌáÈ¡ÏÂһЩ¼Ç¼£¨ÌáÈ¡µÄÊýĿΪCacheSizeµÄ´óС£©¡£Äã±ØÐë¸ù¾ÝÄã¾ßÌåµÄÓ¦ÓóÌÐòµÄÇé¿öÀ´É趨CacheSizeµÄ´óС±£Ö¤ÄãµÃµ½×îºÃµÄÐÔÄÜ¡£ ¡¡¡¡×Ô¼º¶¨Òåcommand¶ÔÏóµÄ²ÎÊý ¡¡¡¡ÔÚÐí¶àÊý¾ÝÔ´ÖУ¬µÃµ½²ÎÊýÐÅÏ¢ºÍÖ´ÐÐÃüÁîµÄ´ú¼Û¼¸ºõÊÇÒ»ÑùµÄ£¬ËùÒÔÈç¹û¿ÉÄܵĻ°£¬ÄãÒª×Ô¼ºÔÚ³ÌÐòÖж¨ÒåºÃcommand²ÎÊý(Ò²¾ÍÊÇ˵Ҫ¶¨ÒåºÃ²ÎÊýµÄÃû³Æ¡¢ÀàÐͺͷ½ÏòÐÅÏ¢),¶ø±ÜÃâ´ÓÊý¾ÝÌṩÕߣ¨Provider£©ÄÇÀï»ñÈ¡ÐÅÏ¢. ¡¡¡¡Ê¹ÓÃÔʼµÄOLE DBÌṩÕß ¡¡¡¡MDAC¶ÔÐí¶àÊý¾ÝÔ´ÌṩÁËÔʼµÄÊý¾ÝÌṩÕߣ¬±ÈÈçSQL Server,OracleºÍACCESSÊý¾Ý¿â£¬ÕâÑùÄã²»ÐèÒªÔÙͨ¹ýODBCÀ´»ñÈ¡Êý¾Ý£¨Ò²¾ÍÊÇ˵²»ÐèÒªÔÙͨ¹ýODBCÇý¶¯ÕâÒ»²ã£©£¬ÕâÑùµÄºÃ´¦ÊÇÄãÄܸü¿ìµÄµÃµ½Êý¾Ý£¬²¢ÇÒ½µµÍ´ÅÅ̺ÍÄÚ´æµÄ¿ªÏú¡£ ¡¡¡¡Èç¹ûʹÓÿͻ§¶ËÓαêµÄ»°£¬¶Ï¿ªconnectionÁ¬½Ó ¡¡¡¡ADOÓÐÒ»¸öÌØÕ÷Êǵ±Ê¹Óÿͻ§¶ËÓαê²Ù×÷Recordset¼Ç¼¼¯µÄʱºò£¬²»ÐèÒªºÍ·þÎñÆ÷½øÐÐÁªÏµ¡£Äã¿ÉÒÔ³ä·ÖÀûÓÃÕâ¸öÌØÕ÷½µµÍ·þÎñÆ÷¶ËµÄ¿ªÏú£¨·þÎñÆ÷¾Í²»ÐèҪά»¤ÕâЩÁ¬½ÓÁË£©£¬µ±Äã²Ù×÷Íê¼Ç¼¼¯ÐèÒª¸üеĻ°£¬¿ÉÒÔÖØкÍÊý¾Ý¿â½øÐÐÁ¬½ÓÀ´¸üÐÂÊý¾Ý¡£ÎªÁË´´½¨Ò»¸ö¿ÉÒԶϿªÁ¬½ÓµÄ¼Ç¼¼¯£¬ÄãͬʱҲÐèҪʹÓþ²Ì¬Óαê(adOpenStatic)ºÍÅú´¦ÀíµÄ¼ÓËøģʽ£¨adLockBatchOptimistic£©¡£ÏÂÃæµÄʾÀýÊÇÓÃVCдµÄ£º ¡¡ ¡¡¡¡pRs.CreateInstance(__uuid(Recordset)); ¡¡¡¡pRs->CursorLoction=adUseClient; ¡¡¡¡pRs->Open(strCmdText,strConnection,adOpenStatic,adLockBatchOptimistic,adCmdText); ¡¡¡¡pRs->PutRefActiveConnection(NULL); ¡¡¡¡file://ÕâÀï¿ÉÒԶԼǼ¼¯¶ÔÏópRs½øÐвÙ×÷ ¡¡¡¡pRs->PutRefAxctiveConnection(pCon); file://ÖØкÍÊý¾Ý¿â½¨Á¢Á¬½Ó ¡¡¡¡pRs->UpdateBatch(adAffectAll); file://ÅúÁ¿¸üÐÂÊý¾Ý ÐèҪעÒâµÄÊÇ£¬µ±ÄãÖ´ÐÐÅúÁ¿¸üеĻ°£¬Äã±ØÐë×Ô¼º´¦ÀíÊý¾Ý³åÍ»ÎÊÌ⣬ÒòΪµ±Äã¸üÐÂÊý¾ÝµÄʱºò£¬ÆäËûÈË¿ÉÄÜÒ²ÕýÔÚ¶Ô¸ÃÊý¾Ý½øÐвÙ×÷¡£ ¡¡¡¡Èç¹û²»ÐèÒª·µ»Ø¼Ç¼µÄ»°£¬Ê¹ÓÃadExecuteNoRecordsÑ¡Ïî ¡¡¡¡ADO 2.0°üÀ¨Ò»¸öеÄÖ´ÐÐÑ¡Ïî³ÆΪadExecuteNoRecords£¬µ±Ê¹ÓøÃÑ¡ÏîµÄʱºò£¬ADO¾Í²»»á´´½¨¼Ç¼¼¯¶ÔÏ󣬲»ÉèÖÃÈκÎÓαêÊôÐÔ¡£Êý¾ÝÌṩÕßÒòΪ²»ÐèÒªÈÏÖ¤Ðм¯ºÏµÄÊôÐÔ¶øʹÐÔÄܵõ½ÓÅ»¯¡£¾ßÌåµÄÀý×ÓÈçÏ£º ¡¡¡¡con.Execute "insert into tbl values(fv1, fv2) ", , adExecuteNoRecords ¶Ô½öÓÐÒ»ÌõµÄÖ´ÐÐÓï¾ä²ÉÓÃConnection::ExecuteµÄ·½·¨±ÈʹÓÃRecordset::Open»òÕßÊÇCommand::ExecuteµÄЧ¹ûÒªºÃ£¬ÒòΪADO²»±£ÁôÈκÎÃüÁî״̬µÄÐÅÏ¢£¬Òò´ËÖ´ÐÐÐÔÄܾÍÓÐËù¸Ä½ø¡£ ¡¡¡¡Ê¹ÓÃsession/connection»º³å³Ø ¡¡¡¡ÎÒÃÇÖªµÀ£¬Êý¾Ý¿âµÄ´ò¿ªºÍ¹Ø±ÕÊǺÜÏûºÄϵͳ×ÊÔ´µÄ¡£Òò´Ë£¬Á¬½Ó³Ø¶Ô»ùÓÚ¶à²ãµÄÓ¦ÓõÄÐÔÄÜÓкܴóµÄÌá¸ß£¬µ±ÄãʹÓÃMDACµÄʱºò£¬¿ª·¢ÈËÔ±±¾Éí²¢²»ÐèÒª¿¼ÂǶÔÊý¾Ý¿âÁ¬½ÓµÄ»º´æ£¬MDAC»á×Ô¶¯´¦ÀíËü¡£Á¬½Ó³ØÔÚÁ½¸ö²ã´ÎÉÏÌṩ֧³Ö£¬OLE DB sessionsºÍODBCÁ¬½Ó¡£Èç¹ûÄãʹÓÃADOµÄ»°£¬ÄãµÄÊý¾Ý¿âÁ¬½Ó»á×Ô¶¯±»OLE DB session»º³å³ØËù»º´æ¡£Èç¹ûʹÓÃODBCµÄ»°£¬ÔÚODBCÊý¾ÝÔ´¹ÜÀíÖÐеÄÁ¬½Ó»º³å³ØÑ¡Ïî¿ÉÒÔÈÃÄã¶ÔODBC»º³å½øÐÐÉèÖã¬È»ºóODBCÇý¶¯³ÌÐò»áΪÄã×öʣϵÄÊÂÇé¡£
--------------------------------------------------------------------------------
Ïà¹ØÎÄÕÂ
Êý¾Ý¿âÉè¼ÆÖеÄÃô½Ý·½·¨ 2004-2-9 11:19:16
´óÐÍÊý¾Ý¿âÉè¼ÆÔÔò 2003-12-15 12:49:18
ERwin--¼ò»¯µÄÊý¾Ý¿âÉè¼Æ¹¤¾ß 2003-12-15 12:41:40
Microsoft AccessÃØÃÜ¡¢¼¼ÇɺÍÏÝÚå 2003-10-17 19:58:04
ÈçºÎÕï¶Ï/ÐÞ¸´Ëð»µµÄ Jet 4.0 Êý¾Ý¿â 2003-10-14 8:31:26
ÓÅ»¯Microsoft AccessÌá¸ßËÙ¶È 2003-10-6 10:31:55
|