• <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-win32,mysql-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不一定在這個目錄下,請按實際情況修改?;蛘甙裮sado15.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://m.shnenglu.com/current/archive/2009/07/24/91069.html
            posted on 2013-03-07 15:30 王海光 閱讀(4904) 評論(0)  編輯 收藏 引用 所屬分類: DataBase
            午夜久久久久久禁播电影 | 久久香蕉国产线看观看精品yw| 一本一道久久a久久精品综合| 久久久久久a亚洲欧洲aⅴ | 综合久久精品色| 一本久久综合亚洲鲁鲁五月天| 久久综合亚洲色HEZYO国产| 性做久久久久久免费观看| 午夜精品久久久久久| 亚洲乱码精品久久久久..| 久久久久久久99精品免费观看| 久久嫩草影院免费看夜色| 久久久久精品国产亚洲AV无码| 99久久无码一区人妻a黑| 久久精品国内一区二区三区| 久久精品成人影院| 成人国内精品久久久久一区| 一级a性色生活片久久无| 天天综合久久久网| 久久午夜无码鲁丝片| 亚洲欧美国产精品专区久久| 狠狠久久亚洲欧美专区 | 人人狠狠综合久久亚洲高清| 亚洲中文字幕无码久久精品1 | 嫩草影院久久99| 国内高清久久久久久| 亚洲色欲久久久综合网东京热| 99久久综合狠狠综合久久止| 久久伊人色| 久久久久久综合一区中文字幕| 久久精品99久久香蕉国产色戒| 人妻中文久久久久| 狠狠色丁香久久综合婷婷| 久久久亚洲裙底偷窥综合| 无码8090精品久久一区| 色偷偷88欧美精品久久久 | 久久ww精品w免费人成| 久久亚洲精品国产精品婷婷 | 午夜人妻久久久久久久久| 国产69精品久久久久观看软件 | 国产激情久久久久影院老熟女免费|