• <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>
            posts - 6, comments - 7, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            VC++ ADO 連接 mysql

            Posted on 2009-07-24 20:21 Current 閱讀(15181) 評論(5)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)庫

                  通過自己摸索和網(wǎng)上幫助 了解了VC++ 用ADO 連接mysql數(shù)據(jù)庫的方法:
                 使用的方法是利用ADO通過建立ODBC數(shù)據(jù)源來最終達(dá)到訪問MySQL的目的。
                 1.安裝mysql數(shù)據(jù)庫服務(wù)器程序,也可安裝appserv-win32-2.5.9.rar  里面包含了appche ,php,mysql ,安裝后者可以通過網(wǎng)頁管理數(shù)據(jù)庫。因?yàn)榉奖闼晕也庞煤笳摺?br>            
            安裝過程中記住密碼。
            2.建立數(shù)據(jù)庫:
                可以通過命令行 也可以通過網(wǎng)頁建立:http://localhost/phpMyAdmin/  輸入用戶名root 和密碼就可通過網(wǎng)頁管理數(shù)據(jù)庫。
                可以導(dǎo)入數(shù)據(jù)庫:
            -- phpMyAdmin SQL Dump
            -- version 2.10.2
            -- http://www.phpmyadmin.net
            --
            -- 主機(jī): localhost
            -- 生成日期: 2009 年 07 月 24 日 11:56
            -- 服務(wù)器版本: 5.0.22
            -- PHP 版本: 5.2.3

            SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

            --
            -- 數(shù)據(jù)庫: `testmysql`
            --

            -- --------------------------------------------------------

            --
            -- 表的結(jié)構(gòu) `test`
            --

            CREATE TABLE `test` (
              `id` int(4) NOT NULL auto_increment,
              `name` varchar(50) NOT NULL,
              PRIMARY KEY  (`id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=3 ;

            --
            -- 導(dǎo)出表中的數(shù)據(jù) `test`
            --

            INSERT INTO `test` VALUES (1, 'qq');
            INSERT INTO `test` VALUES (2, 'ww');

             3.安裝MyODBC 我安裝的是:MyODBC-3.51.11-2-win.exe
               然后:開始菜單->設(shè)置->控制面板->管理工具->數(shù)據(jù)源(ODBC)->系統(tǒng)DSN->添加->選擇MySQL ODBC 3.51 Driver
             
            這里可以填寫所有的數(shù)據(jù)  以可以在程序里面填寫數(shù)據(jù) 這里 DSN 為 ADOmysql
             4.所有準(zhǔn)備工作已做完,那我們就可以開始寫程序連接數(shù)據(jù)庫:
            程序代碼: 代碼來源:《Visual C++ + SQL Server 數(shù)據(jù)庫應(yīng)用實(shí)例 完全解析》

             1// ADOConn.h: interface for the ADOConn class.
             2//
             3//////////////////////////////////////////////////////////////////////
             4#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")
             5
             6#if !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)
             7#define AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_
             8
             9#if _MSC_VER > 1000
            10#pragma once
            11#endif // _MSC_VER > 1000
            12
            13class ADOConn  
            14{
            15// 定義變量
            16public:
            17    //添加一個(gè)指向Connection對象的指針:
            18    _ConnectionPtr m_pConnection;
            19    //添加一個(gè)指向Recordset對象的指針:
            20    _RecordsetPtr m_pRecordset;
            21// 定義方法
            22public:
            23    ADOConn();
            24    virtual ~ADOConn();
            25    // 初始化—連接數(shù)據(jù)庫
            26    void  OnInitADOConn();
            27    // 執(zhí)行查詢
            28    _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
            29    // 執(zhí)行SQL語句,Insert Update _variant_t
            30    BOOL ExecuteSQL(_bstr_t bstrSQL);
            31    void ExitConnect();
            32}
            ;
            33
            34#endif // !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)
            35



              1// ADOConn.cpp: implementation of the ADOConn class.
              2//
              3//////////////////////////////////////////////////////////////////////
              4
              5#include "stdafx.h"
              6#include "ADOConn.h"
              7
              8#ifdef _DEBUG
              9#undef THIS_FILE
             10static char THIS_FILE[]=__FILE__;
             11#define new DEBUG_NEW
             12#endif
             13
             14//////////////////////////////////////////////////////////////////////
             15// Construction/Destruction
             16//////////////////////////////////////////////////////////////////////
             17
             18ADOConn::ADOConn()
             19{
             20
             21}

             22
             23ADOConn::~ADOConn()
             24{
             25
             26}

             27
             28// 初始化—連接數(shù)據(jù)庫
             29void  ADOConn::OnInitADOConn()
             30{
             31    // 初始化OLE/COM庫環(huán)境 
             32    ::CoInitialize(NULL);
             33  
             34    try
             35    {
             36        // 創(chuàng)建Connection對象
             37        m_pConnection.CreateInstance("ADODB.Connection");
             38        m_pConnection->Open("DSN=ADOmysql;Server= localhost;Database=testmysql","root","123456",adModeUnknown);
             39    }
             
             40    // 捕捉異常
             41    catch(_com_error e)
             42    {
             43        // 顯示錯(cuò)誤信息
             44        AfxMessageBox(e.Description());
             45    }

             46}

             47
             48// 執(zhí)行查詢
             49_RecordsetPtr&  ADOConn::GetRecordSet(_bstr_t bstrSQL)
             50{
             51    try
             52    {
             53        // 連接數(shù)據(jù)庫,如果Connection對象為空,則重新連接數(shù)據(jù)庫
             54        if(m_pConnection==NULL)
             55            OnInitADOConn();
             56        // 創(chuàng)建記錄集對象
             57        m_pRecordset.CreateInstance(__uuidof(Recordset));
             58        // 取得表中的記錄
             59        m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
             60    }

             61    // 捕捉異常
             62    catch(_com_error e)
             63    {
             64        // 顯示錯(cuò)誤信息
             65        AfxMessageBox(e.Description());
             66    }

             67    // 返回記錄集
             68    return m_pRecordset;
             69}

             70
             71 // 執(zhí)行SQL語句,Insert Update _variant_t
             72BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
             73{
             74//    _variant_t RecordsAffected;
             75    try
             76    {
             77        // 是否已經(jīng)連接數(shù)據(jù)庫
             78        if(m_pConnection == NULL)
             79            OnInitADOConn();
             80        // Connection對象的Execute方法:(_bstr_t CommandText, 
             81        // VARIANT * RecordsAffected, long Options ) 
             82        // 其中CommandText是命令字串,通常是SQL命令。
             83        // 參數(shù)RecordsAffected是操作完成后所影響的行數(shù), 
             84        // 參數(shù)Options表示CommandText的類型:adCmdText-文本命令;adCmdTable-表名
             85        // adCmdProc-存儲過程;adCmdUnknown-未知
             86        m_pConnection->Execute(bstrSQL,NULL,adCmdText);
             87        return true;
             88    }

             89    catch(_com_error e)
             90    {
             91        AfxMessageBox(e.Description());
             92        return false;
             93    }

             94}

             95
             96void ADOConn::ExitConnect()
             97{
             98    // 關(guān)閉記錄集和連接
             99    if (m_pRecordset != NULL)
            100        m_pRecordset->Close();
            101    m_pConnection->Close();
            102    // 釋放環(huán)境
            103    ::CoUninitialize();
            104}

            建立本類的一個(gè)對象 然后就可訪問mysql數(shù)據(jù)庫了:
             1    ADOConn m_ADO;
             2    m_ADO.OnInitADOConn();
             3    
             4    //設(shè)置SELECT語句
             5    _bstr_t vSQL;
             6    vSQL = "SELECT * FROM test WHERE id = 1";
             7    //執(zhí)行SELETE語句
             8    _RecordsetPtr m_pRecordset;
             9    m_pRecordset = m_ADO.GetRecordSet(vSQL);
            10
            11    CString name0;
            12    //返回各列的值
            13    if (!m_pRecordset->adoEOF)
            14    {
            15
            16        name0 = (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("name");
            17    }

            18    //斷開與數(shù)據(jù)庫的連接
            19    m_ADO.ExitConnect();
            20
            21    MessageBox(name0, L"id = 1"0);

            運(yùn)行結(jié)果:

            Feedback

            # re: VC++ ADO 連接 mysql [未登錄]  回復(fù)  更多評論   

            2010-07-30 17:06 by 小李
            好文章

            # re: VC++ ADO 連接 mysql   回復(fù)  更多評論   

            2010-08-19 10:29 by Jack-z
            交流下

            # re: VC++ ADO 連接 mysql   回復(fù)  更多評論   

            2011-04-11 11:19 by zhuo
            Thank you, it helps me much

            # re: VC++ ADO 連接 mysql   回復(fù)  更多評論   

            2012-04-09 10:45 by lx
            lz你好,你上面的sql查詢語句
            6 vSQL = "SELECT * FROM test WHERE id = 1";
            中,可以使用宿主變量嗎。
            比如我想從對話框讀取id然后把id存到變量m中,這里怎么設(shè)置讓id=m???
            ,謝謝

            # re: VC++ ADO 連接 mysql   回復(fù)  更多評論   

            2012-09-14 23:11 by 飛飛龍
            學(xué)習(xí)了,多謝
            久久免费高清视频| 无码久久精品国产亚洲Av影片| 久久精品国产福利国产秒| 久久99国产精一区二区三区| 久久99精品久久久久久齐齐| 久久久黄色大片| 狠狠色丁香婷婷综合久久来| 久久亚洲欧洲国产综合| 激情伊人五月天久久综合| 久久婷婷色综合一区二区| 久久精品中文闷骚内射| 久久久久国产亚洲AV麻豆| 久久国产精品无码HDAV| 少妇无套内谢久久久久| 亚洲国产成人久久精品影视| 日日躁夜夜躁狠狠久久AV| 亚洲精品成人久久久| AAA级久久久精品无码区| 亚洲精品国产字幕久久不卡| 久久精品国产国产精品四凭 | 久久久久久久波多野结衣高潮| WWW婷婷AV久久久影片| 亚洲中文字幕久久精品无码APP| 久久精品二区| 国产福利电影一区二区三区久久久久成人精品综合 | 久久综合九色综合网站| 99久久香蕉国产线看观香 | 国产高潮国产高潮久久久| 国内高清久久久久久| 中文精品99久久国产 | 久久久久高潮毛片免费全部播放 | 欧美精品一区二区久久| 亚洲午夜久久久精品影院| 久久99国产精品一区二区| WWW婷婷AV久久久影片| 精品久久久久久成人AV| …久久精品99久久香蕉国产| 国产午夜精品理论片久久影视| 国产精品一久久香蕉国产线看观看| 久久这里只有精品18| 久久久久亚洲精品无码蜜桃|