• <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://m.shnenglu.com/current/archive/2009/07/24/91069.html
            posted on 2013-03-07 15:30 王海光 閱讀(4893) 評論(0)  編輯 收藏 引用 所屬分類: DataBase
            MM131亚洲国产美女久久| 精品久久久久久久久免费影院| 一本大道久久香蕉成人网| 国产精品日韩欧美久久综合| 久久精品国产亚洲av麻豆色欲| 亚洲精品高清国产一线久久| 久久久久久亚洲精品不卡| 亚州日韩精品专区久久久| 欧美精品丝袜久久久中文字幕 | 久久超乳爆乳中文字幕| 狠狠色婷婷久久一区二区| 狠狠色丁香婷婷久久综合五月| 欧美日韩精品久久久久| 久久99精品国产麻豆宅宅| 日韩精品久久久久久久电影蜜臀 | 久久久综合香蕉尹人综合网| 99久久夜色精品国产网站| 久久影院亚洲一区| 久久天天婷婷五月俺也去| 久久香综合精品久久伊人| 久久香蕉一级毛片| 久久亚洲国产精品123区| 久久国产精品无| 久久夜色精品国产噜噜噜亚洲AV| 久久不见久久见免费视频7| 精品久久久久久久久中文字幕| 国产精品日韩深夜福利久久| 国产精品久久久久久久app| 色婷婷综合久久久久中文| 99久久综合国产精品二区| 99久久夜色精品国产网站| 亚洲国产成人久久精品动漫| 久久受www免费人成_看片中文| 国产婷婷成人久久Av免费高清| 99久久国产主播综合精品 | 精品久久久久久久久久中文字幕| 久久久久久国产a免费观看黄色大片| 久久精品人人做人人爽97| 久久天天躁狠狠躁夜夜2020| 国产亚洲精品美女久久久| 亚洲精品国产第一综合99久久|