在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1、安装mysql-5.0.22-win32,mysql-connector-odbc-5.1.12-win32.msi #include <afxdb.h> // MFC Automation classes
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")
/************************************************************************
*Copyright: *FileName:ADOConn.h * *Author:wanghaiguang *Date:2013-03-07 *Description:ADO Operate MySql DataBase ************************************************************************/ #pragma once 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(); };
#include "StdAfx.h"
#include "ADOConn.h" CADOConn::CADOConn(void) { } CADOConn::~CADOConn(void) { } /************************************************************************ *Function : OnInitADOConn *Description: Init DataBase Connect *param : bconString[in] () *return : 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=MySqlTest;Server= localhost;Database=school","root","sa",adModeUnknown); } } // 捕捉异常 catch(_com_error e) { // 显示错误信息 AfxMessageBox(e.Description()); } } /************************************************************************ *Function : GetRecordSet *Description: Select Data *param : bstrSQL[in] SQL *return : _RecordsetPtr ************************************************************************/ _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; } /************************************************************************ *Function : ExecuteSQL *Description: Exec SQL For Insert Update _variant_t *param : bstrSQL[in] SQL *return : BOOL ************************************************************************/ 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; } } /************************************************************************ *Function : ExitConnect *Description: Exit Connect DataBase *param : *return : void ************************************************************************/ void CADOConn::ExitConnect() { // 关闭记录集和连接 if (m_pRecordset != NULL) { m_pRecordset->Close(); //m_pRecordset->Release(); } m_pConnection->Close(); //m_pConnection->Release(); // 释放环境 ::CoUninitialize(); }
BOOL ConnectMySqlFun1()
{ CoInitialize(NULL); //初始化Com组件 conPtr.CreateInstance(__uuidof(Connection)); //Connection用于与数据库服务器的链接另一种方式 /******************连接数据库********************/ try { // MySqlTest为数据源名 localhost表示本地 root表示用户名 sa表示密码 conPtr->Open("DSN=MySqlTest;server=localhost;database=school;","root","sa",adModeUnknown);///连接MySql数据库(测试成功) } catch(_com_error e) //捕捉异常 { printf("Connect Error : %s", e.Description()); return FALSE; } return TRUE; } BOOL ConnectMySqlFun2() { CoInitialize(NULL); //初始化Com组件 try { //创建连接对象实例 conPtr.CreateInstance("ADODB.Connection"); //设置连接字符串 //mdb------------------------------------------------ CString strConnect="DSN=MySqlTest"; //使用Open方法连接数据库 conPtr->Open((_bstr_t)strConnect,"root","sa",adModeUnknown); } catch(_com_error e) { printf("Connect Error : %s", e.Description()); return FALSE; } return TRUE; }
CADOConn m_ADO;
m_ADO.OnInitADOConn(); //设置SELECT语句 _bstr_t vSQL, vInserSQL; vSQL = "select name from teacher"; //设置INSERT语句 vInserSQL = "insert into teacher values(27, 'hai', '哈尔滨六中', '1998-05-05')"; ///执行INSERT语句 if (m_ADO.ExecuteSQL(vInserSQL)) { printf("Insert Data Successful!!!"); } //执行SELETE语句 _RecordsetPtr m_pRecordset; m_pRecordset = m_ADO.GetRecordSet(vSQL); CString name0; //返回各列的值 while (!m_pRecordset->adoEOF) { name0 = (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("name"); //CString name=(CString)recordPtr->GetCollect(_variant_t("name")).bstrVal; //int no=recordPtr->GetCollect(_variant_t("stuno")).intVal; printf("name : %s\n", name0); m_pRecordset->MoveNext(); } //断开与数据库的连接 m_ADO.ExitConnect(); |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论