• <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>
            面對現(xiàn)實,超越自己
            逆水行舟,不進則退
            posts - 269,comments - 32,trackbacks - 0
            1、安裝mysql-5.0.22-win32mysql-connector-odbc-5.1.12-win32.msi
                然后:開始菜單->設(shè)置->控制面板->管理工具->數(shù)據(jù)源(ODBC)->系統(tǒng)DSN->添加->選擇MySQL ODBC 5.1 Driver

            2、首先導入ADO類型庫,您的環(huán)境中msado15.dll不一定在這個目錄下,請按實際情況修改。或者把msado15.dll這個文件拷貝到你的工程目錄下,直接#import "msado15.dll" \ no_namespace \rename ("EOF", "adoEOF")包含進來。
            在stdafx.h加入如下代碼:
            #include <afxdb.h>        // MFC Automation classes
            #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")

            3、代碼示例:

            .h文件:
            /************************************************************************
            *Copyright:
            *FileName:ADOConn.h
            *
            *Author:wanghaiguang
            *Date:2013-03-07
            *Description:ADO Operate MySql DataBase
            ***********************************************************************
            */

            #pragma once

            class CADOConn
            {
            public:
                CADOConn(void);
                ~CADOConn(void);

            public:
                //添加一個指向Connection對象的指針:
                _ConnectionPtr m_pConnection;
                //添加一個指向Recordset對象的指針:
                _RecordsetPtr m_pRecordset;
                // 定義方法
            public:
                // 初始化—連接數(shù)據(jù)庫
                void OnInitADOConn();
                // 執(zhí)行查詢
                _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
                // 執(zhí)行SQL語句,Insert Update _variant_t
                BOOL ExecuteSQL(_bstr_t bstrSQL);
                void ExitConnect();
            };

            .cpp文件:
            #include "StdAfx.h"
            #include "ADOConn.h"

            CADOConn::CADOConn(void)
            {
            }

            CADOConn::~CADOConn(void)
            {
            }

            /************************************************************************
            *Function   : OnInitADOConn
            *Description: Init DataBase Connect
            *param      : bconString[in] ()
            *return     : void
            ***********************************************************************
            */
            void  CADOConn::OnInitADOConn()
            {
                // 初始化OLE/COM庫環(huán)境 
                ::CoInitialize(NULL);
                HRESULT hr;
                  
                try
                {
                     // 創(chuàng)建Connection對象,可以通過配置文件獲取連接信息
                     hr = m_pConnection.CreateInstance("ADODB.Connection");
                     if(SUCCEEDED(hr))
                     {
                         m_pConnection->ConnectionTimeout=600;//設(shè)置連接超時時間
                         m_pConnection->CommandTimeout=120;//設(shè)置執(zhí)行命令超時時間
                    
                         m_pConnection->Open("DSN=MySqlTest;Server= localhost;Database=school","root","sa",adModeUnknown);
                     }
                } 
                // 捕捉異常
                catch(_com_error e)
                {
                    // 顯示錯誤信息
                    AfxMessageBox(e.Description());
                }
            }

            /************************************************************************
            *Function   : GetRecordSet
            *Description: Select Data
            *param      : bstrSQL[in] SQL
            *return     : _RecordsetPtr
            ***********************************************************************
            */
            _RecordsetPtr&  CADOConn::GetRecordSet(_bstr_t bstrSQL)
            {
                try
                {
                    // 連接數(shù)據(jù)庫,如果Connection對象為空,則重新連接數(shù)據(jù)庫
                    if(m_pConnection==NULL)
                        OnInitADOConn();
                    // 創(chuàng)建記錄集對象
                    m_pRecordset.CreateInstance(__uuidof(Recordset));
                    // 取得表中的記錄
                    m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
                }
                // 捕捉異常
                catch(_com_error e)
                {
                    // 顯示錯誤信息
                    AfxMessageBox(e.Description());
                }
                // 返回記錄集
                return m_pRecordset;
            }

            /************************************************************************
            *Function   : ExecuteSQL
            *Description: Exec SQL For Insert Update _variant_t
            *param      : bstrSQL[in] SQL
            *return     : BOOL
            ***********************************************************************
            */
            BOOL CADOConn::ExecuteSQL(_bstr_t bstrSQL)
            {
                // _variant_t RecordsAffected;
                try
                {
                    // 是否已經(jīng)連接數(shù)據(jù)庫
                    if(m_pConnection == NULL)
                            OnInitADOConn();
                    // Connection對象的Execute方法:(_bstr_t CommandText, 
                    
            // VARIANT * RecordsAffected, long Options ) 
                    
            // 其中CommandText是命令字串,通常是SQL命令。
                    
            // 參數(shù)RecordsAffected是操作完成后所影響的行數(shù), 
                    
            // 參數(shù)Options表示CommandText的類型:adCmdText-文本命令;adCmdTable-表名
                    
            // adCmdProc-存儲過程;adCmdUnknown-未知
                    m_pConnection->Execute(bstrSQL,NULL,adCmdText);
                    return true;
                }
                catch(_com_error e)
                {
                    AfxMessageBox(e.Description());
                    return false;
                }
            }

            /************************************************************************
            *Function   : ExitConnect
            *Description: Exit Connect DataBase
            *param      : 
            *return     : void
            ***********************************************************************
            */
            void CADOConn::ExitConnect()
            {
                // 關(guān)閉記錄集和連接
                if (m_pRecordset != NULL)
                {
                    m_pRecordset->Close();
                    //m_pRecordset->Release();
                }
                m_pConnection->Close();
                //m_pConnection->Release();
                
            // 釋放環(huán)境
                ::CoUninitialize();
            }

            其他連接數(shù)據(jù)庫:

            BOOL ConnectMySqlFun1()
            {
                CoInitialize(NULL); //初始化Com組件
                conPtr.CreateInstance(__uuidof(Connection)); //Connection用于與數(shù)據(jù)庫服務(wù)器的鏈接另一種方式
                /******************連接數(shù)據(jù)庫********************/
                try
                {
                    // MySqlTest為數(shù)據(jù)源名 localhost表示本地 root表示用戶名 sa表示密碼
                    conPtr->Open("DSN=MySqlTest;server=localhost;database=school;","root","sa",adModeUnknown);///連接MySql數(shù)據(jù)庫(測試成功)
                }
                catch(_com_error e) //捕捉異常
                {
                    printf("Connect Error : %s", e.Description());
                    return FALSE;
                }

                return TRUE;
            }

            BOOL ConnectMySqlFun2()
            {
                CoInitialize(NULL); //初始化Com組件
                try
                {
                    //創(chuàng)建連接對象實例
                    conPtr.CreateInstance("ADODB.Connection");
                    //設(shè)置連接字符串
                    
            //mdb------------------------------------------------
                    CString strConnect="DSN=MySqlTest";
                    //使用Open方法連接數(shù)據(jù)庫
                    conPtr->Open((_bstr_t)strConnect,"root","sa",adModeUnknown);
                }
                catch(_com_error e)
                {
                    printf("Connect Error : %s", e.Description());
                    return FALSE;
                }
                return TRUE;
            }

            操作MySql數(shù)據(jù)庫:
                CADOConn m_ADO;
                m_ADO.OnInitADOConn();
                    
                //設(shè)置SELECT語句
                _bstr_t vSQL, vInserSQL;
                vSQL = "select name from teacher";
                //設(shè)置INSERT語句
                vInserSQL = "insert into teacher values(27, 'hai', '哈爾濱六中', '1998-05-05')";
                ///執(zhí)行INSERT語句
                if (m_ADO.ExecuteSQL(vInserSQL))
                {
                    printf("Insert Data Successful!!!");
                }

                //執(zhí)行SELETE語句
                _RecordsetPtr m_pRecordset;
                m_pRecordset = m_ADO.GetRecordSet(vSQL);

                CString name0;
                //返回各列的值
                while (!m_pRecordset->adoEOF)
                {
                    name0 = (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("name");
                    //CString name=(CString)recordPtr->GetCollect(_variant_t("name")).bstrVal;
                    
            //int no=recordPtr->GetCollect(_variant_t("stuno")).intVal;
                    printf("name : %s\n", name0);
                    m_pRecordset->MoveNext();
                }
                //斷開與數(shù)據(jù)庫的連接
                m_ADO.ExitConnect();

            參考鏈接:http://www.shnenglu.com/current/archive/2009/07/24/91069.html
            posted on 2013-03-07 15:30 王海光 閱讀(4893) 評論(0)  編輯 收藏 引用 所屬分類: DataBase
            伊人久久精品无码av一区| 日韩亚洲国产综合久久久| 伊人 久久 精品| 久久er国产精品免费观看8| 国产99精品久久| 久久精品成人免费看| 人妻久久久一区二区三区| 亚洲AV成人无码久久精品老人| 亚洲日本久久久午夜精品| 亚洲精品美女久久久久99小说| 亚洲人AV永久一区二区三区久久| 久久国产福利免费| 一级a性色生活片久久无| 久久免费看黄a级毛片| 色妞色综合久久夜夜| 国内精品久久久人妻中文字幕| 99久久免费国产精品热| 国产精品久久久久一区二区三区 | 亚洲国产精品久久久久婷婷软件 | 久久亚洲欧美日本精品| 天天综合久久久网| 久久乐国产精品亚洲综合| 99久久精品免费看国产一区二区三区| 亚洲人成精品久久久久| 午夜不卡888久久| 7777精品伊人久久久大香线蕉| 久久无码人妻一区二区三区| 91久久九九无码成人网站| 久久综合鬼色88久久精品综合自在自线噜噜 | 亚洲综合精品香蕉久久网97| 久久精品国产清自在天天线| 伊人精品久久久久7777| 国产精品久久久福利| 2020国产成人久久精品| 久久精品国产亚洲沈樵| 色婷婷狠狠久久综合五月| 久久久久久久人妻无码中文字幕爆| 久久综合久久综合九色| 久久久国产精华液| 久久久精品国产亚洲成人满18免费网站 | 亚洲AV伊人久久青青草原|