1、安装mysql5.5 和mysql连接驱动mysql-connector-odbc-5.1.12-win32.msi
2、给mysql添加数据源,方法可百度windows下mysql如何在odbc添加数据源
3、如果在添加数据源的时候无法找到MySQL ODBC 5.1 Driver,则需要进行如下步骤:
进入dos命令行,输入:
C:\Users\Administrator>cd\windows\SysWOW64
C:\windows\SysWOW64>odbcad32
详细步骤地址:http://bbs.csdn.net/topics/391986934
4、下面在vs2013下进行C++ ADO操作mysql数据库
ADOConn.h
#pragma once
//导入ADO库,位置在计算机c盘
#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF") //32位系统加上这个
//#import "c:\Program Files (x86)\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") rename("BOF","adoBOF") //64位系统加上这个
class CADOConn
{
public:
CADOConn(void);
~CADOConn(void);
public:
//添加一个指向Connection对象的指针:
_ConnectionPtr m_pConnection;
//添加一个指向Recordset对象的指针:
_RecordsetPtr m_pRecordset;
// 定义方法
public:
// 初始化—连接数据库
void OnInitADOConn();
// 执行查询
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
// 执行SQL语句,Insert Update _variant_t
BOOL ExecuteSQL(_bstr_t bstrSQL);
void ExitConnect();
};
ADOConn.cpp
#include "ADOConn.h"
CADOConn::CADOConn(void)
{
}
CADOConn::~CADOConn(void)
{
}
void CADOConn::OnInitADOConn()
{
// 初始化OLE/COM库环境
::CoInitialize(NULL);
HRESULT hr;
try
{
// 创建Connection对象,可以通过配置文件获取连接信息
hr = m_pConnection.CreateInstance("ADODB.Connection");
if (SUCCEEDED(hr))
{
m_pConnection->ConnectionTimeout = 600;//设置连接超时时间
m_pConnection->CommandTimeout = 120;//设置执行命令超时时间
m_pConnection->Open("DSN=mysql;Server= localhost;Database=home", "root", "123456", adModeUnknown);
//mysql是设置好的Data Soure Name
//Server= localhost 本机
//Database=home,home是用mysql创建的数据库
//root和123456分别是登录mysql数据库的用户名和密码
}
}
// 捕捉异常
catch (_com_error e)
{
// 显示错误信息
//AfxMessageBox(e.Description());//需要建立MFC工程,但我这里是控制台工程,就把它注释掉了,下同
}
}
_RecordsetPtr& CADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
// 连接数据库,如果Connection对象为空,则重新连接数据库
if (m_pConnection == NULL)
OnInitADOConn();
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的记录
m_pRecordset->Open(bstrSQL, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
}
// 捕捉异常
catch (_com_error e)
{
// 显示错误信息
//AfxMessageBox(e.Description());
}
// 返回记录集
return m_pRecordset;
}
BOOL CADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
// _variant_t RecordsAffected;
try
{
// 是否已经连接数据库
if (m_pConnection == NULL)
OnInitADOConn();
// Connection对象的Execute方法:(_bstr_t CommandText,
// VARIANT * RecordsAffected, long Options )
// 其中CommandText是命令字串,通常是SQL命令。
// 参数RecordsAffected是操作完成后所影响的行数,
// 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名
// adCmdProc-存储过程;adCmdUnknown-未知
m_pConnection->Execute(bstrSQL, NULL, adCmdText);
return true;
}
catch (_com_error e)
{
//AfxMessageBox(e.Description());
return false;
}
}
void CADOConn::ExitConnect()
{
// 关闭记录集和连接
if (m_pRecordset != NULL)
{
m_pRecordset->Close();
//m_pRecordset->Release();
}
m_pConnection->Close();
//m_pConnection->Release();
// 释放环境
::CoUninitialize();
}
main.cpp
#include "ADOConn.h"
int main()
{
CADOConn m_ADO;
m_ADO.OnInitADOConn();
//在进行sql语句之前,先要用mysql创建数据库home,然后建立一张teacher表,包含id和name两个字段
//设置SELECT语句
_bstr_t vSQL, vInserSQL;
vSQL = "select name from teacher";
//设置INSERT语句
vInserSQL = "insert into teacher values(2, '张')";
///执行INSERT语句
if (m_ADO.ExecuteSQL(vInserSQL))
{
printf("Insert Data Successful!!!\n");
}
//执行SELETE语句
_RecordsetPtr m_pRecordset;
m_pRecordset = m_ADO.GetRecordSet(vSQL);
LPCTSTR name; //LPCTSTR等价于const TCHAR *
//const TCHAR * name;
//返回各列的值
while (!m_pRecordset->adoEOF)
{
name = (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("name");
printf("name : %s\n", name);
m_pRecordset->MoveNext();
}
//断开与数据库的连接
m_ADO.ExitConnect();
return 0;
}