VC++ ADO 连接 mysql

通过自己摸索和网上帮助 了解了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);

运行结果:

时间: 2024-10-25 05:11:10

VC++ ADO 连接 mysql的相关文章

ado连接mysql和ORACLE

------mysql strConnect.Format("Provider=MSDASQL.1;Driver={%s};Server=%s;DataBase=%s;UID=%s;PWD=%s;",  "MySQL ODBC 5.2 Unicode Driver"//strDriver/*MYSQL驱动,如:"MySQL ODBC 3.51 Driver"*/,;  ,"localhost"//strServerPath/*

C++连接mysql数据库的两种方法

现在正做一个接口,通过不同的连接字符串操作不同的数据库.要用到mysql数据库,以前没用过这个数据库,用access和sql server比较多.通过网上的一些资料和自己的摸索,大致清楚了C++连接mysql的方法.可以通过2种方法实现. 第一种方法是利用ADO连接, 第二种方法是利用mysql自己的api函数进行连接. 第一种方法可以实现我当前的需求,通过连接不同的字符串来连接不同的数据库.暂时只连接了mysql,sqlserver,oracle,access.对于access,因为它创建表的

一种利用ADO连接池操作MySQL的解决方案(VC++)

VC++连接MySQL数据库 常用的方式有三种:ADO.mysql++,mysql API ; 本文只讲述ADO的连接方式. 为什么要使用连接池? 对于简单的数据库应用,完全可以先创建一个常连接(此连接永远不关闭,直接数进程退出),但是这样做至少会引起两个问题:(1)资源竞争,多个数据库请求操作不能同时进行,后一请求必须要等到前一请求完成后才能进行:(2)多线程情况下容易出现混乱,甚至出现资源异常释放.还有一种方法,就是使用数据库时创建连接,使用完后关闭连接回收资源.这种方式在数据库操作频繁的情

C++ ADO方式连接mysql数据库

对于软件开发其实说白了就是在不停地和数据打交道, 所以数据库的操作是必不可少的, 接下来介绍VC开发中利用ADO建立ODBC数据源来访问MySQL数据库. 从我接触的数据库编程方式来说, 我觉得在vc开发连接数据库是比较难的, 也是很容易出错. 在android中, 系统自带sqlite数据库,只需要使用SQLiteOpenHelper抽象类即可完成与数据库的操作. 在java中, 使用jdbc连接mysql数据库, 下载相应jar调用相应接口,传入数据库类型与用户名密码进行数据库的操作. 但是

如何正确获得mysql,access的ADO连接字符串,并使用该连接字符串连接数据库

如何正确获得mysql的ADO连接字符串,摘自网页http://blog.csdn.net/zyq5945/article/details/5486393 首先你正确安装了MYSQL的数据库驱动程序(mysql-connector-odbc-5.1.6-win32.msi ) 1.在桌面上新建一个空的文本文件mysql.txt,重命名为mysql.udl: 2.双击这个mysql.udl文件,打开“数据库连接属性”对话框,在“提供程序”页选择”Micrsoft Ole DB Provider f

VS2010/VS2013项目创建及通过ADO.NET连接mysql/sql server步骤(VS2013连接成功步骤见上一篇随笔)

本随笔主要是对初学者通过ADO.NET连接数据库的步骤(刚开始我也诸多不顺,所以总结下,让初学者熟悉步骤) 1.打开VS新建一个项目(这里的VS版本不限,建项目都是一样的步骤) VS2010版本如图: VS2013版本如图: 2.非空项目创建后,右侧“解决方案管理器”中会有一个“models”文件,右键“models”,具体步骤如下: 2-1步骤 2-2步骤 2-3步骤 2-3-1  注意这个是VS2010版本的截图 2-4步骤 2-5步骤 2-6步骤 2-7步骤 2-8步骤 2-10步骤 2-

VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法

VC连接MySQL的配置过程在上一篇博文中,不过当你设置好,以为万事大吉的时候,运行却出现这个错误:libmysql.lib : fatal error LNK1113: invalid machine type. 无效的机器类型,真的是很让人捉急. 发生这个错误的原因是,我在win8.1上安装的是64bit的mysql服务器,而我编译32位的VC程序,连接的是64位的libmysql.lib库,所以会产生 “无效的机器类型(invalid machine type)”的错误提示. 对于这个“e

C 连接mysql VC的步骤

初学C,看到C 连接mysql的教程不是很多,遇到很多的问题,看过许多盟友的解决方法,有点模糊(对我这个菜鸟来说),下面贴出具体步骤,一起学习: 1.C连接mysql的方法:C ,C ++ ,ODBC ,java ,Net .......,这里看C的连接,首先进入mysql驱动官网下载connector/c http://dev.mysql.com/downloads/connector/ 选择C版下载                               2.C  在vc 6环境下连接m

vc连接mysql数据库的方法

前段时间项目中用的是mysql数据库,它的连接方法有二种,一种是数据库自带的API,还有一种就用ADO连接了. 由于本次项目用的mysql数据库只是暂时的,后期可能会更改为MSSQL,所以如果用mysql自带的API连接移植性不好,所以改为ADO的,到时只要修改下字符串连接值就行了. 其实ADO连接的底层也是调用的ODBC驱动去连接,所以需要去下载个数据库对应的ODBC驱动,别人说秘本需要对应,要不然连接不上,我没有做太多测试,自己用的6.0版本,所以去官网下载了个mysql-connector