• <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ò)才歷歷可見(jiàn)。 -- 聶魯達(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)
            -------------------------------------------------------------------------------
            連接:通過(guò)"連接"可從應(yīng)用程序訪問(wèn)數(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)  
                       來(lái)初始化, 用 CoUninitialize() 釋放;
                    3. 在使用記錄集對(duì)象前必須先調(diào)用 CAdoConnection::Open() 連接數(shù)據(jù)庫(kù),
                       連接后可給多個(gè) CAdoRecordSet 對(duì)象使用, 用完后須關(guān)閉數(shù)據(jù)庫(kù).
                    4. 使用記錄集執(zhí)行SQL語(yǔ)句之前, 要使用構(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è)常量:
            ---------------------|---------------------------------------------------------
            [常量]                 |[說(shuō)明] 
            ---------------------|---------------------------------------------------------
            adConnectUnspecified |(默認(rèn))同步方式打開(kāi)連接. 
            adAsyncConnect         |異步方式打開(kāi)連接. Ado用 ConnectComplete 事件來(lái)通知已經(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ù)庫(kù) ---------------------------------------------
                    return (m_pConnection->Open(_bstr_t(LPCTSTR(m_strConnect)), """", lOptions) == S_OK);
                }

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

                
            return FALSE;
            }


            /*=============================================================================
            Name:    連接 SQL SERVER 數(shù)據(jù)庫(kù). 
            -------------------------------------------------------------------------------
            Params:        [dbsrc]:    SQL SERVER 服務(wù)器名.
                        [dbname]:    默認(rèn)的數(shù)據(jù)庫(kù)名.
                        [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ù)庫(kù). 
            -------------------------------------------------------------------------------
            Params:        [dbpath]:    MDB 數(shù)據(jù)庫(kù)文件路徑名.
                        [pass]:        訪問(wèn)密碼.
            ------------------------------------------------------------------------------
            調(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:    通過(guò) udl 文件連接數(shù)據(jù)庫(kù). 
            -------------------------------------------------------------------------------
            Params:        [strFileName]:    UDL 數(shù)據(jù)庫(kù)連接文件路徑名.
            ------------------------------------------------------------------------------
            調(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ù)庫(kù)發(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 語(yǔ)句、存儲(chǔ)過(guò)程等.
            ----------------------------------------------------------
            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ù)庫(kù)的名稱.
            ==========================================================================
            */

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

                
            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:    檢測(cè)連接對(duì)象是否為打開(kāi)狀態(tài).
            =============================================================================
            */

            BOOL CADOConnection::IsOpen()
            {
                
            try
                
            {
                    
            return (m_pConnection != NULL && (m_pConnection->State & adStateOpen));//是否打開(kāi)狀態(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:    返回下列常量之一的長(zhǎng)整型值.
                    [常量]                [說(shuō)明] 
            -------------------------------------------------------------------------------
                    adStateClosed        指示對(duì)象是關(guān)閉的. 
                    adStateOpen            指示對(duì)象是打開(kāi)的. 
            -------------------------------------------------------------------------------
                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 的值.
                    [常量]                 [說(shuō)明] 
            -------------------------------------------------------------------------------
                    adModeUnknown         默認(rèn)值. 表明權(quán)限尚未設(shè)置或無(wú)法確定. 
                    adModeRead             表明權(quán)限為只讀. 
                    adModeWrite             表明權(quán)限為只寫. 
                    adModeReadWrite         表明權(quán)限為讀/寫. 
                    adModeShareDenyRead  防止其他用戶使用讀權(quán)限打開(kāi)連接. 
                    adModeShareDenyWrite 防止其他用戶使用寫權(quán)限打開(kāi)連接. 
                    adModeShareExclusive 防止其他用戶打開(kāi)連接. 
                    adModeShareDenyNone  防止其他用戶使用任何權(quán)限打開(kāi)連接.
            -------------------------------------------------------------------------------
                Remarks: 使用 Mode 屬性可設(shè)置或返回當(dāng)前連接上提供者正在使用的訪問(wèn)權(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ù)庫(kù)信息.
                -----------------------------------------------------
                Params:        QueryType  所要運(yùn)行的模式查詢類型.
                -----------------------------------------------------
                returns:    返回包含數(shù)據(jù)庫(kù)信息的 Recordset 對(duì)象. Recordset 將以只讀、靜態(tài)
                        游標(biāo)打開(kāi).
            ==========================================================================
            */

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

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


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


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

            long CADOConnection::BeginTrans()
            {
                ASSERT(m_pConnection 
            != NULL);
                
            try
                
            {
                    
            return m_pConnection->BeginTrans();//開(kāi)始新事務(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 只影響最新打開(kāi)的事務(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 閱讀(2155) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 分享代碼數(shù)據(jù)庫(kù)

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

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

            久久精品国产影库免费看| 大美女久久久久久j久久| 亚洲一级Av无码毛片久久精品| 久久久久久亚洲精品无码| 尹人香蕉久久99天天拍| 99久久er这里只有精品18| 99久久婷婷国产一区二区| 亚洲欧美日韩久久精品| 久久青青草原精品影院| 热久久最新网站获取| 国产成人无码精品久久久久免费| 伊人色综合久久天天网| 国产精品gz久久久| 亚洲伊人久久精品影院| 久久本道综合久久伊人| 人人狠狠综合久久亚洲88| 少妇久久久久久被弄高潮| 亚洲精品tv久久久久| 久久国产精品久久精品国产| 亚洲中文字幕久久精品无码喷水| 国产69精品久久久久99尤物| av无码久久久久不卡免费网站 | 伊人久久大香线蕉综合影院首页 | 亚洲国产婷婷香蕉久久久久久| 狠狠干狠狠久久| 久久久久亚洲av综合波多野结衣| 久久99久久无码毛片一区二区| 久久国产精品久久精品国产| www.久久热.com| 久久亚洲国产成人精品性色| 亚洲国产另类久久久精品黑人| 久久无码AV中文出轨人妻| 伊人久久成人成综合网222| 久久久久亚洲爆乳少妇无| 亚洲综合久久综合激情久久| 国产99久久久国产精品~~牛| 99国产欧美久久久精品蜜芽| 亚洲成色999久久网站| 品成人欧美大片久久国产欧美| 91精品日韩人妻无码久久不卡| 97超级碰碰碰碰久久久久|