vc连接mysql类_VC++连接MYSQL数据库

注:关闭“数据库连接属性”后再次双击mysql.udl打开该对话框,会因为密码丢失问题点击“测试连接”会连接不上,把“数据库连接属性”对话框上的密码等补全就可以了,用文本方式打开mysql.udl文件就是完整的连接字符串。

// ADOConn.h: interface for the ADOConn class.

//

//

//#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename//("EOF","adoEOF") rename("BOF","adoBOF")

#if !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)

#define AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

class ADOConn

{

// 定义变量

public:

_ConnectionPtr m_pConnection;//添加一个指向Connection对象的指针

_RecordsetPtr m_pRecordset; //添加一个指向Recordset对象的指针

// 定义方法

public:

ADOConn();

virtual ~ADOConn();

void OnInitADOConn(); // 初始化—连接数据库

_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL); // 执行查询

BOOL ExecuteSQL(_bstr_t bstrSQL); // 执行SQL语句,Insert Update

void ExitConnect(); //断开数据库连接

void CloseRecordset(); //关闭记录集

};

#endif // !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)

// ADOConn.cpp: implementation of the ADOConn class.

//

//

#include "stdafx.h"

#include "ADOConn.h"

#ifdef _DEBUG

#undef THIS_FILE

static char THIS_FILE[]=__FILE__;

#define new DEBUG_NEW

#endif

//

// Construction/Destruction

//

ADOConn::ADOConn()

{

}

ADOConn::~ADOConn()

{

}

// 初始化—连接数据库

void ADOConn::OnInitADOConn()

{

::CoInitialize(NULL);// 初始化OLE/COM库环境

try

{

//m_pConnection.CreateInstance("ADODB.Connection"); // 创建Connection对象

m_pConnection.CreateInstance(__uuidof(Connection)); // 创建Connection对象

//设置链接字符串

_bstr_t strConnect="Driver=MySQL ODBC 5.1 Driver;SERVER=127.0.0.1;UID=root;DATABASE=test;PORT=3306";

m_pConnection->Open(strConnect,"root","nfz",adModeUnknown);

}

catch(_com_error e) // 捕捉异常

{

AfxMessageBox(e.Description()); // 显示错误信息

}

}

_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL) //打开记录集

{

try

{

if(m_pConnection==NULL) // 连接数据库,如果Connection对象为空,则重新连接数据库

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; // 返回记录集

}

// 执行SQL语句,Insert Update _variant_t

BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)

{

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 ADOConn::CloseRecordset()

{

if (m_pRecordset != NULL)

m_pRecordset->Close();

}

// 断开连接

void ADOConn::ExitConnect()

{

m_pConnection->Close(); //关闭链接

m_pRecordset.Release(); //释放COM接口的引用计数

m_pConnection.Release(); //释放COM接口的引用计数

::CoUninitialize(); // 释放环境

}

编写好封装类:

ADOConn。

在一个工程里加入该类的方法为:把该类的头文件和

cpp

文件拷贝到工程所在的文件夹里。然后在工程的工作区选择

Project->Add to Project->Files,

将这两个文件选择加入。之后,就可以在程序里应用这个类了。

参考博文:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值