• <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++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            VC++ ADO 連接 mysql

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

                  通過(guò)自己摸索和網(wǎng)上幫助 了解了VC++ 用ADO 連接mysql數(shù)據(jù)庫(kù)的方法:
                 使用的方法是利用ADO通過(guò)建立ODBC數(shù)據(jù)源來(lái)最終達(dá)到訪問(wèn)MySQL的目的。
                 1.安裝mysql數(shù)據(jù)庫(kù)服務(wù)器程序,也可安裝appserv-win32-2.5.9.rar  里面包含了appche ,php,mysql ,安裝后者可以通過(guò)網(wǎng)頁(yè)管理數(shù)據(jù)庫(kù)。因?yàn)榉奖闼晕也庞煤笳摺?br>            
            安裝過(guò)程中記住密碼。
            2.建立數(shù)據(jù)庫(kù):
                可以通過(guò)命令行 也可以通過(guò)網(wǎng)頁(yè)建立:http://localhost/phpMyAdmin/  輸入用戶名root 和密碼就可通過(guò)網(wǎng)頁(yè)管理數(shù)據(jù)庫(kù)。
                可以導(dǎo)入數(shù)據(jù)庫(kù):
            -- 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ù)庫(kù): `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
               然后:開(kāi)始菜單->設(shè)置->控制面板->管理工具->數(shù)據(jù)源(ODBC)->系統(tǒng)DSN->添加->選擇MySQL ODBC 3.51 Driver
             
            這里可以填寫(xiě)所有的數(shù)據(jù)  以可以在程序里面填寫(xiě)數(shù)據(jù) 這里 DSN 為 ADOmysql
             4.所有準(zhǔn)備工作已做完,那我們就可以開(kāi)始寫(xiě)程序連接數(shù)據(jù)庫(kù):
            程序代碼: 代碼來(lái)源:《Visual C++ + SQL Server 數(shù)據(jù)庫(kù)應(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對(duì)象的指針:
            18    _ConnectionPtr m_pConnection;
            19    //添加一個(gè)指向Recordset對(duì)象的指針:
            20    _RecordsetPtr m_pRecordset;
            21// 定義方法
            22public:
            23    ADOConn();
            24    virtual ~ADOConn();
            25    // 初始化—連接數(shù)據(jù)庫(kù)
            26    void  OnInitADOConn();
            27    // 執(zhí)行查詢
            28    _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
            29    // 執(zhí)行SQL語(yǔ)句,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ù)庫(kù)
             29void  ADOConn::OnInitADOConn()
             30{
             31    // 初始化OLE/COM庫(kù)環(huán)境 
             32    ::CoInitialize(NULL);
             33  
             34    try
             35    {
             36        // 創(chuàng)建Connection對(duì)象
             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ù)庫(kù),如果Connection對(duì)象為空,則重新連接數(shù)據(jù)庫(kù)
             54        if(m_pConnection==NULL)
             55            OnInitADOConn();
             56        // 創(chuàng)建記錄集對(duì)象
             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語(yǔ)句,Insert Update _variant_t
             72BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
             73{
             74//    _variant_t RecordsAffected;
             75    try
             76    {
             77        // 是否已經(jīng)連接數(shù)據(jù)庫(kù)
             78        if(m_pConnection == NULL)
             79            OnInitADOConn();
             80        // Connection對(duì)象的Execute方法:(_bstr_t CommandText, 
             81        // VARIANT * RecordsAffected, long Options ) 
             82        // 其中CommandText是命令字串,通常是SQL命令。
             83        // 參數(shù)RecordsAffected是操作完成后所影響的行數(shù), 
             84        // 參數(shù)Options表示CommandText的類(lèi)型:adCmdText-文本命令;adCmdTable-表名
             85        // adCmdProc-存儲(chǔ)過(guò)程;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}

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

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

            Feedback

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

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

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

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

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

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

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

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

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

            2012-09-14 23:11 by 飛飛龍
            學(xué)習(xí)了,多謝

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            欧美一区二区精品久久| 久久久青草青青国产亚洲免观| 国内精品久久久久影院薰衣草 | 久久久青草青青国产亚洲免观| 97久久超碰国产精品旧版| 人妻少妇久久中文字幕一区二区 | 精品久久无码中文字幕| 99久久国产宗和精品1上映| 久久久久亚洲精品日久生情 | 久久AV无码精品人妻糸列| 久久综合偷偷噜噜噜色| 色偷偷88欧美精品久久久 | 亚洲七七久久精品中文国产| 香蕉久久影院| 亚洲AV无码久久精品色欲| 久久婷婷五月综合色奶水99啪| 狠狠色婷婷久久综合频道日韩| 亚洲综合精品香蕉久久网| 久久精品国产亚洲av水果派| 国产精品久久久久影院色| 热久久这里只有精品| 精品久久人人妻人人做精品 | 亚洲成色WWW久久网站| 久久亚洲日韩精品一区二区三区| 久久久久亚洲Av无码专| 99麻豆久久久国产精品免费| 蜜桃麻豆www久久| 欧美精品丝袜久久久中文字幕 | 99久久99久久精品国产片果冻| 热re99久久6国产精品免费| 精品久久久久久久久中文字幕| 精品久久久无码中文字幕天天| 一个色综合久久| 久久精品无码专区免费东京热| 伊人久久大香线蕉精品| 国产精品美女久久福利网站| 久久精品无码专区免费东京热| 狠狠精品久久久无码中文字幕| 色天使久久综合网天天| 久久精品中文闷骚内射| 久久精品国产99久久香蕉|