• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            山寨:不是最好的,是最適合我們的!歡迎體驗(yàn)山寨 中文版MSDN

            Blog @ Blog

            當(dāng)華美的葉片落盡,生命的脈絡(luò)才歷歷可見。 -- 聶魯達(dá)

            常用鏈接

            統(tǒng)計(jì)

            積分與排名

            BBS

            Blog

            Web

            最新評(píng)論

            封裝ADO編程Connection對(duì)象的類

             

            // ADOConnection.cpp: implementation of the CADOConnection class.
            //
            //////////////////////////////////////////////////////////////////////
            /******************************************************************************
            [文件名]: ADOConnection.cpp(ADO連接對(duì)象_ConnectionPtr封裝類)
            [版本號(hào)]: Ver1.0(2008-06-09)
            [作  者]: isabc (E-mail:isabc@163.com QQ:272126451)
            -------------------------------------------------------------------------------
            連接:通過"連接"可從應(yīng)用程序訪問數(shù)據(jù)源,連接是交換數(shù)據(jù)所必需的環(huán)境。
            -------------------------------------------------------------------------------
            注意事項(xiàng):
                    1. 必須在下面指明 msado15.dll 的全路徑, 一般在 "C:\Program Files\
                       Common Files\System\ADO\" 目錄下.
                    2. 在使用本類之前必須要初始化 COM 環(huán)境, 可以調(diào)用 CoInitialize(NULL)  
                       來初始化, 用 CoUninitialize() 釋放;
                    3. 在使用記錄集對(duì)象前必須先調(diào)用 CAdoConnection::Open() 連接數(shù)據(jù)庫,
                       連接后可給多個(gè) CAdoRecordSet 對(duì)象使用, 用完后須關(guān)閉數(shù)據(jù)庫.
                    4. 使用記錄集執(zhí)行SQL語句之前, 要使用構(gòu)建方法或調(diào)用 SetAdoConnection() 
                       關(guān)聯(lián)到連接對(duì)象.
            *****************************************************************************
            */

            #include 
            "stdafx.h"
            #include 
            "ADODataBase.h"
            #include 
            "ADOConnection.h"
            #include 
            <math.h>

            #ifdef _DEBUG
            #undef THIS_FILE
            static char THIS_FILE[]=__FILE__;
            #define new DEBUG_NEW
            #endif


            //////////////////////////////////////////////////////////////////////
            // Construction/Destruction
            //////////////////////////////////////////////////////////////////////

            CADOConnection::CADOConnection()
            {
                
            //-----------------------創(chuàng)建 Connection 對(duì)象-----------------------------
                m_pConnection.CreateInstance("ADODB.Connection");
                #ifdef _DEBUG
                
            if (m_pConnection == NULL)
                
            {
                    AfxMessageBox(
            "Connection 對(duì)象創(chuàng)建失敗! 請(qǐng)確認(rèn)是否初始化了COM環(huán)境\r\n");
                }

                
            #endif
                ASSERT(m_pConnection 
            != NULL);
            }


            CADOConnection::
            ~CADOConnection()
            {
                
            if (m_pConnection != NULL)
                
            {
                    Release();
                }

            }


            /*=============================================================================
            Name: 連接到數(shù)據(jù)源.
            -------------------------------------------------------------------------------
            Params:    [lpszConnect]: 連接字符串, 包含連接信息.
                    [lOptions]:    可選. 決定該方法是以同步還是異步的方式連接數(shù)據(jù)源. 
                                可以是如下某個(gè)常量:
            ---------------------|---------------------------------------------------------
            [常量]                 |[說明] 
            ---------------------|---------------------------------------------------------
            adConnectUnspecified |(默認(rèn))同步方式打開連接. 
            adAsyncConnect         |異步方式打開連接. Ado用 ConnectComplete 事件來通知已經(jīng)完成連接. 
            -------------------------------------------------------------------------------
            Remark: 調(diào)用連接對(duì)象的成員函數(shù)Open()
            =============================================================================
            */

            BOOL CADOConnection::Open(LPCTSTR lpszConnect, 
            long lOptions)
            {
                ASSERT(m_pConnection 
            != NULL);
                ASSERT(AfxIsValidString(lpszConnect));
                
                
            if (strcmp(lpszConnect, _T("")) != 0)
                
            {
                    m_strConnect 
            = lpszConnect;
                }


                
            if (m_strConnect.IsEmpty())
                
            {
                    ASSERT(FALSE);
                    
            return FALSE;
                }


                
            if (IsOpen()) 
                    Close();

                
            try
                
            {
                    
            // 連接數(shù)據(jù)庫 ---------------------------------------------
                    return (m_pConnection->Open(_bstr_t(LPCTSTR(m_strConnect)), """", lOptions) == S_OK);
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: 連接數(shù)據(jù)庫發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    TRACE(_T(
            "%s\r\n"), GetLastErrorText());
                    
            return FALSE;
                }
             
                
            catch ()
                
            {
                    TRACE(_T(
            "Warning: 連接數(shù)據(jù)庫時(shí)發(fā)生未知錯(cuò)誤:"));
                }

                
            return FALSE;
            }


            /*=============================================================================
            Name:    連接 SQL SERVER 數(shù)據(jù)庫. 
            -------------------------------------------------------------------------------
            Params:        [dbsrc]:    SQL SERVER 服務(wù)器名.
                        [dbname]:    默認(rèn)的數(shù)據(jù)庫名.
                        [user]:        用戶名.
                        [pass]:        密碼.
            ------------------------------------------------------------------------------
            調(diào)用本類成員函數(shù)Open()
            =============================================================================
            */

            BOOL CADOConnection::ConnectSQLServer(CString dbsrc, CString dbname, CString user, CString pass, 
            long lOptions)
            {
                CString strConnect 
            = _T("Provider=SQLOLEDB.1; Data Source="+ dbsrc + 
                                     _T(
            "; Initial Catalog="+ dbname  +
                                     _T(
            "; User ID="+ user + 
                                     _T(
            "; PWD="+ pass;
                
            return Open(LPCTSTR(strConnect), lOptions);
            }


            /*=============================================================================
            Name:    連接 ACCESS 數(shù)據(jù)庫. 
            -------------------------------------------------------------------------------
            Params:        [dbpath]:    MDB 數(shù)據(jù)庫文件路徑名.
                        [pass]:        訪問密碼.
            ------------------------------------------------------------------------------
            調(diào)用本類成員函數(shù)Open()
            =============================================================================
            */

            BOOL CADOConnection::ConnectAccess(CString dbpath, CString pass, 
            long lOptions)
            {
                CString strConnect 
            = _T("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+ dbpath;
                
            if (pass != _T("")) 
                
            {
                    strConnect 
            += _T("Jet OLEDB:Database Password="+ pass + _T(";");
                }

                
            return Open(LPCTSTR(strConnect), lOptions);
            }


            /*=============================================================================
            Name:    通過 udl 文件連接數(shù)據(jù)庫. 
            -------------------------------------------------------------------------------
            Params:        [strFileName]:    UDL 數(shù)據(jù)庫連接文件路徑名.
            ------------------------------------------------------------------------------
            調(diào)用本類成員函數(shù)Open()
            =============================================================================
            */

            BOOL CADOConnection::OpenUDLFile(LPCTSTR strFileName, 
            long lOptions)
            {
                CString strConnect 
            = _T("File Name=");
                strConnect 
            += strFileName;
                
            return Open(LPCTSTR(strConnect), lOptions);
            }



            /*=============================================================================
            Name:    關(guān)閉與數(shù)據(jù)源的連接.
            -------------------------------------------------------------------------------
            Remarks: 使用 Close 方法可關(guān)閉 Connection 對(duì)象以便釋放所有關(guān)聯(lián)的系統(tǒng)資源. 調(diào)用
            連接對(duì)象成員函數(shù)Close()
            =============================================================================
            */

            void CADOConnection::Close()
            {
                
            try
                
            {
                    
            if (m_pConnection != NULL && IsOpen()) 
                    
            {
                        m_pConnection
            ->Close();//關(guān)閉連接
                    }

                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: 關(guān)閉數(shù)據(jù)庫發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                }
             
            }


            /*=============================================================================
            Name:    關(guān)閉連接并釋放對(duì)象.
            -------------------------------------------------------------------------------
            Remarks: 關(guān)閉連接并釋放connection對(duì)象.
            =============================================================================
            */

            void CADOConnection::Release()
            {
                
            if (IsOpen()) 
                    Close();
                m_pConnection
            ->Release();//釋放連接對(duì)象
            }


            /*=============================================================================
            Name:        執(zhí)行指定的查詢、SQL 語句、存儲(chǔ)過程等.
            ----------------------------------------------------------
            Remarks:    請(qǐng)參考 CAdoRecordSet 類的Open方法. 返回的 Recordset 對(duì)象始
                        終為只讀、僅向前的游標(biāo).
            =============================================================================
            */

            _RecordsetPtr CADOConnection::Execute(LPCTSTR lpszSQL, 
            long lOptions)
            {
                ASSERT(m_pConnection 
            != NULL);
                ASSERT(AfxIsValidString(lpszSQL));

                
            try
                
            {
                    
            return m_pConnection->Execute(_bstr_t(lpszSQL), NULL, lOptions);
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: Execute 方法發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"),
                                e.ErrorMessage(), __FILE__, __LINE__);
                    
            return FALSE;
                }
             
                
            return FALSE;
            }


            /*=============================================================================
            Name:        取消操作
            -------------------------------------------------------------------------------
            Remarks:    請(qǐng)參考 CAdoRecordSet 類 Cancel 方法.
            =============================================================================
            */

            BOOL CADOConnection::Cancel()
            {
                ASSERT(m_pConnection 
            != NULL);
                
            try
                
            {
                    
            return m_pConnection->Cancel();
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: Cancel 方法發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"),
                                e.ErrorMessage(), __FILE__, __LINE__);
                    
            return FALSE;
                }
             
                
            return FALSE;
            }


            /*=============================================================================
            Name:    取得最后發(fā)生的錯(cuò)誤信息.
            =============================================================================
            */

            CString CADOConnection::GetLastErrorText()
            {
                ASSERT(m_pConnection 
            != NULL);
                CString strErrors 
            = "";
                
            try
                
            {
                    
            if (m_pConnection != NULL)
                    
            {
                        ErrorsPtr pErrors 
            = m_pConnection->Errors;
                        CString strError;
                        
            for (long n = 0; n < pErrors->Count; n++)
                        
            {
                            ErrorPtr pError 
            = pErrors->GetItem(n);
                            strError.Format(_T(
            "Description: %s\r\nState: %s, Native: %d, Source: %s\r\n"),
                                            (LPCTSTR)pError
            ->Description,
                                            (LPCTSTR)pError
            ->SQLState,
                                                     pError
            ->NativeError,
                                            (LPCTSTR)pError
            ->Source);
                            strErrors 
            += strError;
                        }

                    }

                    
            return strErrors;
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: GetLastError 方法發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return strErrors;
                }
             
                
            return strErrors;
            }


            ErrorsPtr CADOConnection::GetErrors()
            {
                ASSERT(m_pConnection 
            != NULL);
                
            try
                
            {
                    
            if (m_pConnection != NULL)
                    
            {
                        
            return m_pConnection->Errors;
                    }

                    
            return NULL;
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: GetErrors 方法發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return NULL;
                }
             
                
            return NULL;
            }


            ErrorPtr CADOConnection::GetError(
            long index)
            {
                ASSERT(m_pConnection 
            != NULL);
                
            try
                
            {
                    
            if (m_pConnection != NULL)
                    
            {
                        ErrorsPtr pErrors 
            =  m_pConnection->Errors;
                        
            if (index >= 0 && index < pErrors->Count)
                        
            {
                            
            return pErrors->GetItem(_variant_t(index));
                        }

                    }

                    
            return NULL;
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: GetError 方法發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return NULL;
                }
             
                
            return NULL;
            }


            /*========================================================================
                Name:        取得默認(rèn)數(shù)據(jù)庫的名稱.
            ==========================================================================
            */

            CString CADOConnection::GetDefaultDatabase()
            {
                ASSERT(m_pConnection 
            != NULL);
                
            try
                
            {
                    
            return CString(LPCTSTR(_bstr_t(m_pConnection->GetDefaultDatabase())));//默認(rèn)數(shù)據(jù)庫名
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: GetDefaultDatabase 方法發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return CString(_T(""));
                }
             
            }


            /*=============================================================================
            Name:        取得 Connection 對(duì)象提供者的名稱.
            =============================================================================
            */

            CString CADOConnection::GetProviderName()
            {
                ASSERT(m_pConnection 
            != NULL);
                
            try
                
            {
                    
            return CString(LPCTSTR(_bstr_t(m_pConnection->GetProvider())));//連接對(duì)象提供者
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: GetProviderName 方法發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return CString(_T(""));
                }
             
            }


            /*=============================================================================
                Name:        取得 ADO 的版本號(hào)
            =============================================================================
            */

            CString CADOConnection::GetVersion()
            {
                ASSERT(m_pConnection 
            != NULL);
                
            try
                
            {
                    
            return CString(LPCTSTR(_bstr_t(m_pConnection->GetVersion())));//獲取ADO版本信息
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: GetVersion 方法發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return CString(_T(""));
                }
             
            }

            /*=============================================================================
                Name:    檢測連接對(duì)象是否為打開狀態(tài).
            =============================================================================
            */

            BOOL CADOConnection::IsOpen()
            {
                
            try
                
            {
                    
            return (m_pConnection != NULL && (m_pConnection->State & adStateOpen));//是否打開狀態(tài)
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: IsOpen 方法發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return FALSE;
                }
             
                
            return FALSE;
            }


            /*=============================================================================
            Name:        取得對(duì)象的狀態(tài)(同 Recordset 對(duì)象的 GetState 方法).
            -------------------------------------------------------------------------------
            returns:    返回下列常量之一的長整型值.
                    [常量]                [說明] 
            -------------------------------------------------------------------------------
                    adStateClosed        指示對(duì)象是關(guān)閉的. 
                    adStateOpen            指示對(duì)象是打開的. 
            -------------------------------------------------------------------------------
                Remarks:        可以隨時(shí)使用 State 屬性取得指定對(duì)象的當(dāng)前狀態(tài).
            =============================================================================
            */

            long CADOConnection::GetState()
            {
                ASSERT(m_pConnection 
            != NULL);
                
            try
                
            {
                    
            return m_pConnection->GetState();//對(duì)象狀態(tài)
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: GetState 發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return -1;
                }
             
                
            return -1;
            }


            /*=============================================================================
            Name:        取得在 Connection 對(duì)象中修改數(shù)據(jù)的可用權(quán)限.
            -------------------------------------------------------------------------------
                returns:    返回以下某個(gè) ConnectModeEnum 的值.
                    [常量]                 [說明] 
            -------------------------------------------------------------------------------
                    adModeUnknown         默認(rèn)值. 表明權(quán)限尚未設(shè)置或無法確定. 
                    adModeRead             表明權(quán)限為只讀. 
                    adModeWrite             表明權(quán)限為只寫. 
                    adModeReadWrite         表明權(quán)限為讀/寫. 
                    adModeShareDenyRead  防止其他用戶使用讀權(quán)限打開連接. 
                    adModeShareDenyWrite 防止其他用戶使用寫權(quán)限打開連接. 
                    adModeShareExclusive 防止其他用戶打開連接. 
                    adModeShareDenyNone  防止其他用戶使用任何權(quán)限打開連接.
            -------------------------------------------------------------------------------
                Remarks: 使用 Mode 屬性可設(shè)置或返回當(dāng)前連接上提供者正在使用的訪問權(quán)限.
            =============================================================================
            */

            ConnectModeEnum CADOConnection::GetMode()
            {
                ASSERT(m_pConnection 
            != NULL);
                
            try
                
            {
                    
            return m_pConnection->GetMode();//獲取連接模式(權(quán)限)
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: GetMode 發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return adModeUnknown;
                }
             
                
            return adModeUnknown;
            }


            /*=============================================================================
            Name:        設(shè)置在 Connection 中修改數(shù)據(jù)的可用權(quán)限. 請(qǐng)參考 GetMode 方法.
            -------------------------------------------------------------------------------
            Remarks:    只能在關(guān)閉 Connection 對(duì)象時(shí)方可設(shè)置 Mode 屬性.
            =============================================================================
            */

            BOOL CADOConnection::SetMode(ConnectModeEnum mode)
            {
                ASSERT(m_pConnection 
            != NULL);
                ASSERT(
            !IsOpen());

                
            try
                
            {
                    m_pConnection
            ->PutMode(mode);//設(shè)置連接模式(權(quán)限)
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: SetMode 發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return FALSE;
                }
             
                
            return TRUE;
            }


            /*=============================================================================
            Name:        取得連接時(shí)間.
            ===============================================================================
            */

            long CADOConnection::GetConnectTimeOut()
            {
                ASSERT(m_pConnection 
            != NULL);
                
            try
                
            {
                    
            return m_pConnection->GetConnectionTimeout();//獲取連接時(shí)間
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: GetConnectTimeOut 方法發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return -1;
                }
             
                
            return -1;
            }


            /*========================================================================
            Name:        設(shè)置連接時(shí)間.
            ==========================================================================
            */

            BOOL CADOConnection::SetConnectTimeOut(
            long lTime)
            {
                ASSERT(m_pConnection 
            != NULL);
                
            try
                
            {
                    m_pConnection
            ->PutConnectionTimeout(lTime);//設(shè)置超時(shí)時(shí)間
                    return TRUE;
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: SetConnectTimeOut 方法發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return FALSE;
                }
             
            }


            /*========================================================================
                Name:        從數(shù)據(jù)源獲取數(shù)據(jù)庫信息.
                -----------------------------------------------------
                Params:        QueryType  所要運(yùn)行的模式查詢類型.
                -----------------------------------------------------
                returns:    返回包含數(shù)據(jù)庫信息的 Recordset 對(duì)象. Recordset 將以只讀、靜態(tài)
                        游標(biāo)打開.
            ==========================================================================
            */

            _RecordsetPtr CADOConnection::OpenSchema(SchemaEnum QueryType)
            {
                ASSERT(m_pConnection 
            != NULL);
                
            try
                
            {
                    
            return m_pConnection->OpenSchema(QueryType, vtMissing, vtMissing);//從提供者獲取數(shù)據(jù)庫模式信息
                }

                
            catch(_com_error e)
                
            {
                    TRACE(_T(
            "Warning: OpenSchema方法發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return NULL;
                }
             
                
            return NULL;
            }


            /*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
                          ------------------------------------------------
                                                事務(wù)處理
                          ------------------------------------------------
            &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
            */


            /*=============================================================================
            Name:        開始新事務(wù).
            -------------------------------------------------------------------------------
            returns:    對(duì)于支持嵌套事務(wù)的數(shù)據(jù)庫來說, 在已打開的事務(wù)中調(diào)用 BeginTrans 
                方法將開始新的嵌套事務(wù). 返回值將指示嵌套層次: 返回值為 1 表示已打開頂層
                事務(wù) (即事務(wù)不被另一個(gè)事務(wù)所嵌套), 返回值為 2 表示已打開第二層事務(wù)(嵌套
                在頂層事務(wù)中的事務(wù)), 依次類推.
            -------------------------------------------------------------------------------
            Remarks:    一旦調(diào)用了 BeginTrans 方法, 在調(diào)用 CommitTrans 或 RollbackTrans
                結(jié)束事務(wù)之前, 數(shù)據(jù)庫將不再立即提交所作的任何更改.
            =============================================================================
            */

            long CADOConnection::BeginTrans()
            {
                ASSERT(m_pConnection 
            != NULL);
                
            try
                
            {
                    
            return m_pConnection->BeginTrans();//開始新事務(wù)
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: BeginTrans 方法發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return -1;
                }
             
                
            return -1;
            }


            /*=============================================================================
            Name:        保存任何更改并結(jié)束當(dāng)前事務(wù).
            -------------------------------------------------------------------------------
            Remarks:    調(diào)用 CommitTrans 或 RollbackTrans 只影響最新打開的事務(wù); 在處理任何
                更高層事務(wù)之前必須關(guān)閉或回卷當(dāng)前事務(wù).
            =============================================================================
            */

            BOOL CADOConnection::CommitTrans()
            {
                ASSERT(m_pConnection 
            != NULL);
                
            try
                
            {
                    
            return SUCCEEDED(m_pConnection->CommitTrans());//保存任何更改并結(jié)束當(dāng)前事務(wù)
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: CommitTrans 方法發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return FALSE;
                }
             
                
            return FALSE;
            }


            /*=============================================================================
                Name:        取消當(dāng)前事務(wù)中所作的任何更改并結(jié)束事務(wù).
            ==============================================================================
            */

            BOOL CADOConnection::RollbackTrans()
            {
                ASSERT(m_pConnection 
            != NULL);
                
            try
                
            {
                    
            return SUCCEEDED(m_pConnection->RollbackTrans());//取消當(dāng)前事務(wù)中所作的任何更改并結(jié)束事務(wù)
                }

                
            catch (_com_error e)
                
            {
                    TRACE(_T(
            "Warning: RollbackTrans 方法發(fā)生異常. 錯(cuò)誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
                    
            return FALSE;
                }
             
                
            return FALSE;
            }



            posted on 2008-06-10 21:20 isabc 閱讀(2151) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 分享代碼數(shù)據(jù)庫

            廣告信息(免費(fèi)廣告聯(lián)系)

            中文版MSDN:
            歡迎體驗(yàn)

            精品久久久久中文字幕一区| 人妻少妇久久中文字幕| 97久久精品人人做人人爽| 精品久久国产一区二区三区香蕉 | 久久国产精品波多野结衣AV| 久久国产视屏| 无码精品久久久天天影视| 91精品国产91久久久久久| 久久亚洲视频| AAA级久久久精品无码片| 天堂无码久久综合东京热| 久久精品国产精品亚洲毛片| 欧美成a人片免费看久久| 久久精品国产99国产电影网| 99精品久久久久久久婷婷| 9999国产精品欧美久久久久久| 久久九九久精品国产免费直播| 国产精品激情综合久久| 青草国产精品久久久久久| 亚洲国产一成久久精品国产成人综合 | 久久精品无码专区免费东京热| 欧洲国产伦久久久久久久| 久久福利青草精品资源站免费| 久久99久国产麻精品66| 久久天天躁狠狠躁夜夜2020 | 日韩精品国产自在久久现线拍 | 久久99热这里只有精品国产 | 亚洲午夜无码久久久久小说| 日本道色综合久久影院| 国产国产成人精品久久| 久久亚洲精品成人AV| 亚洲精品美女久久久久99| 久久精品极品盛宴观看| 久久电影网| 久久国产成人亚洲精品影院| 岛国搬运www久久| 99久久国产综合精品网成人影院| 久久r热这里有精品视频| 久久电影网一区| 精品久久人人爽天天玩人人妻| 久久免费视频观看|