• <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++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            VC++ ADO 連接 mysql

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

                  通過自己摸索和網上幫助 了解了VC++ 用ADO 連接mysql數據庫的方法:
                 使用的方法是利用ADO通過建立ODBC數據源來最終達到訪問MySQL的目的。
                 1.安裝mysql數據庫服務器程序,也可安裝appserv-win32-2.5.9.rar  里面包含了appche ,php,mysql ,安裝后者可以通過網頁管理數據庫。因為方便所以我才用后者。
                        
            安裝過程中記住密碼。
            2.建立數據庫:
                可以通過命令行 也可以通過網頁建立:http://localhost/phpMyAdmin/  輸入用戶名root 和密碼就可通過網頁管理數據庫。
                可以導入數據庫:
            -- phpMyAdmin SQL Dump
            -- version 2.10.2
            -- http://www.phpmyadmin.net
            --
            -- 主機: localhost
            -- 生成日期: 2009 年 07 月 24 日 11:56
            -- 服務器版本: 5.0.22
            -- PHP 版本: 5.2.3

            SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

            --
            -- 數據庫: `testmysql`
            --

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

            --
            -- 表的結構 `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 ;

            --
            -- 導出表中的數據 `test`
            --

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

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

             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    //添加一個指向Connection對象的指針:
            18    _ConnectionPtr m_pConnection;
            19    //添加一個指向Recordset對象的指針:
            20    _RecordsetPtr m_pRecordset;
            21// 定義方法
            22public:
            23    ADOConn();
            24    virtual ~ADOConn();
            25    // 初始化—連接數據庫
            26    void  OnInitADOConn();
            27    // 執行查詢
            28    _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
            29    // 執行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// 初始化—連接數據庫
             29void  ADOConn::OnInitADOConn()
             30{
             31    // 初始化OLE/COM庫環境 
             32    ::CoInitialize(NULL);
             33  
             34    try
             35    {
             36        // 創建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        // 顯示錯誤信息
             44        AfxMessageBox(e.Description());
             45    }

             46}

             47
             48// 執行查詢
             49_RecordsetPtr&  ADOConn::GetRecordSet(_bstr_t bstrSQL)
             50{
             51    try
             52    {
             53        // 連接數據庫,如果Connection對象為空,則重新連接數據庫
             54        if(m_pConnection==NULL)
             55            OnInitADOConn();
             56        // 創建記錄集對象
             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        // 顯示錯誤信息
             65        AfxMessageBox(e.Description());
             66    }

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

             70
             71 // 執行SQL語句,Insert Update _variant_t
             72BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
             73{
             74//    _variant_t RecordsAffected;
             75    try
             76    {
             77        // 是否已經連接數據庫
             78        if(m_pConnection == NULL)
             79            OnInitADOConn();
             80        // Connection對象的Execute方法:(_bstr_t CommandText, 
             81        // VARIANT * RecordsAffected, long Options ) 
             82        // 其中CommandText是命令字串,通常是SQL命令。
             83        // 參數RecordsAffected是操作完成后所影響的行數, 
             84        // 參數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    // 關閉記錄集和連接
             99    if (m_pRecordset != NULL)
            100        m_pRecordset->Close();
            101    m_pConnection->Close();
            102    // 釋放環境
            103    ::CoUninitialize();
            104}

            建立本類的一個對象 然后就可訪問mysql數據庫了:
             1    ADOConn m_ADO;
             2    m_ADO.OnInitADOConn();
             3    
             4    //設置SELECT語句
             5    _bstr_t vSQL;
             6    vSQL = "SELECT * FROM test WHERE id = 1";
             7    //執行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    //斷開與數據庫的連接
            19    m_ADO.ExitConnect();
            20
            21    MessageBox(name0, L"id = 1"0);

            運行結果:

            Feedback

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

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

            # re: VC++ ADO 連接 mysql   回復  更多評論   

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

            # re: VC++ ADO 連接 mysql   回復  更多評論   

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

            # re: VC++ ADO 連接 mysql   回復  更多評論   

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

            # re: VC++ ADO 連接 mysql   回復  更多評論   

            2012-09-14 23:11 by 飛飛龍
            學習了,多謝
            精品永久久福利一区二区| 婷婷久久综合九色综合98| 国产精品岛国久久久久| 精品无码久久久久国产动漫3d| 伊人色综合久久天天| 99麻豆久久久国产精品免费| 亚洲国产精品一区二区久久hs| 欧美激情精品久久久久久| 精品久久久久中文字幕一区| 99久久国产综合精品五月天喷水| www.久久热.com| 国产国产成人精品久久| 精品久久久久久无码专区| 亚洲AV日韩精品久久久久久久| 日韩欧美亚洲综合久久 | 亚洲精品视频久久久| 久久久久亚洲精品无码网址 | 色综合久久久久综合体桃花网 | 亚洲午夜无码久久久久小说| 久久久久国产视频电影| 久久无码人妻精品一区二区三区 | 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | av国内精品久久久久影院| 国产一级做a爰片久久毛片| 久久久精品一区二区三区| 国内精品欧美久久精品| 日韩AV毛片精品久久久| 99久久无色码中文字幕人妻| 久久久久亚洲Av无码专| 国产毛片久久久久久国产毛片| 久久99久久无码毛片一区二区| 亚洲精品高清一二区久久| 精品久久无码中文字幕| 久久se精品一区二区影院| 久久精品国产99国产精品导航 | 久久夜色精品国产网站| 91精品婷婷国产综合久久| 波多野结衣久久| 久久777国产线看观看精品| 久久天天躁狠狠躁夜夜av浪潮| 亚洲精品美女久久777777|