C++ ADO操作mysql数据库

来源:互联网 发布:计算机算法书籍推荐 编辑:程序博客网 时间:2024/06/08 07:39

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_tBOOL 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;}


0 0
原创粉丝点击