• <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)實(shí),超越自己
            逆水行舟,不進(jì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、首先導(dǎo)入ADO類型庫,您的環(huán)境中msado15.dll不一定在這個(gè)目錄下,請按實(shí)際情況修改。或者把msado15.dll這個(gè)文件拷貝到你的工程目錄下,直接#import "msado15.dll" \ no_namespace \rename ("EOF", "adoEOF")包含進(jìn)來。
            在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:
                //添加一個(gè)指向Connection對象的指針:
                _ConnectionPtr m_pConnection;
                //添加一個(gè)指向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è)置連接超時(shí)時(shí)間
                         m_pConnection->CommandTimeout=120;//設(shè)置執(zhí)行命令超時(shí)時(shí)間
                    
                         m_pConnection->Open("DSN=MySqlTest;Server= localhost;Database=school","root","sa",adModeUnknown);
                     }
                } 
                // 捕捉異常
                catch(_com_error e)
                {
                    // 顯示錯(cuò)誤信息
                    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)
                {
                    // 顯示錯(cuò)誤信息
                    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)建連接對象實(shí)例
                    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无码久久久久不卡网站下载| 久久亚洲私人国产精品vA| 久久精品国产亚洲麻豆| 人人狠狠综合久久亚洲高清| 三级韩国一区久久二区综合| 性做久久久久久久| 久久国产综合精品五月天| 久久精品国产AV一区二区三区| 国产精品福利一区二区久久| 国内精品久久久久久久coent| 久久国产色av免费看| 国产99久久久久久免费看| 亚洲国产精品无码成人片久久| 亚洲伊人久久大香线蕉苏妲己| 人妻无码αv中文字幕久久| 久久综合成人网| 伊人丁香狠狠色综合久久| 久久天堂AV综合合色蜜桃网| 激情综合色综合久久综合| 91久久精一区二区三区大全| 国内精品久久久久久久久电影网| 久久国产热这里只有精品| 99久久99久久| 国产精品一区二区久久不卡| 九九精品久久久久久噜噜| 久久精品无码一区二区日韩AV| 国产精品久久影院| 国内精品久久久久影院日本| 伊人久久大香线焦AV综合影院 | 97久久超碰国产精品2021| 久久99这里只有精品国产| 麻豆久久| 精品久久久久久久国产潘金莲| 亚洲欧美一级久久精品| 99久久综合国产精品免费| 久久综合偷偷噜噜噜色| 亚洲日韩欧美一区久久久久我| 最新久久免费视频| 亚洲αv久久久噜噜噜噜噜|