码迷,mamicode.com
首页 > 数据库 > 详细

VC++ ADO 连接 mysql

时间:2015-10-28 12:12:04      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:

通过自己摸索和网上帮助 了解了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技术分享
13技术分享class ADOConn  
14技术分享{
15技术分享// 定义变量
16技术分享public:
17技术分享    //添加一个指向Connection对象的指针:
18技术分享    _ConnectionPtr m_pConnection;
19技术分享    //添加一个指向Recordset对象的指针:
20技术分享    _RecordsetPtr m_pRecordset;
21技术分享// 定义方法
22技术分享public:
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
 10技术分享static char THIS_FILE[]=__FILE__;
 11技术分享#define new DEBUG_NEW
 12技术分享#endif
 13技术分享
 14技术分享//////////////////////////////////////////////////////////////////////
 15技术分享// Construction/Destruction
 16技术分享//////////////////////////////////////////////////////////////////////
 17技术分享
 18技术分享ADOConn::ADOConn()
 19技术分享{
 20技术分享
 21技术分享}
 22技术分享
 23技术分享ADOConn::~ADOConn()
 24技术分享{
 25技术分享
 26技术分享}
 27技术分享
 28技术分享// 初始化—连接数据库
 29技术分享void  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
 72技术分享BOOL 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技术分享
 96技术分享void 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);


运行结果:
技术分享

VC++ ADO 连接 mysql

标签:

原文地址:http://www.cnblogs.com/hushaojun/p/4916713.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!