VC++连接MYSQL数据库
来源:互联网 发布:windows tracert 实现 编辑:程序博客网 时间:2024/05/28 23:23
MFC 连接数据库及封装ADO对象类ADOConn()
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "EndOfFile")
但要注意不能放在stdAfx.h文件的开头,而应该放在所有include指令的后面。否则在编译时会出错。
首先你正确安装了MYSQL的数据库驱动程序(mysql-connector-odbc-5.1.6-win32.msi )
1.在桌面上新建一个空的文本文件mysql.txt,重命名为mysql.udl;
2.双击这个mysql.udl文件,打开“数据库连接属性”对话框,在“提供程序”页选择”Micrsoft Ole DB Provider for ODBC Drivers“,点击下一步;
3.在“连接”页的,"指定数据源"选择"使用连接字符串";
4.点击“编译”,弹出“选择数据源”,在“文件数据源”页中点击”新建“,在创建新数据源选择MYSQL的驱动程序”MySQL ODBC 5.1 Driver";
5.点击“下一步”,点击"浏览",在”另存为“对话框中文件名称写入“mysql",点击”下一步“,点击”完成“;
6.在"MySQL Connnettor/ODBC Data Source Configuration"对话框中按需求(如下图);
7.点击“Test”,看连接是否成功,连接成功会有个”Connenction successful“提示框,需要更详细的设置点击“Details”,点击”OK“,设置完成;
8.返回“数据库连接属性”对话框,点击“测试连接”,成功的话就是我们要的连接字符串。
下面是我本机测试的ADO连接字符串,服务器localhost,数据库meismon,用户名root,密码123456
Provider=MSDASQL.1;Persist Security Info=True;Extended Properties="Driver=MySQL ODBC 5.1 Driver;SERVER=localhost;UID=root;PWD=123456;DATABASE=seismon;PORT=3306;COLUMN_SIZE_S32=1"
注:关闭“数据库连接属性”后再次双击mysql.udl打开该对话框,会因为密码丢失问题点击“测试连接”会连接不上,把“数据库连接属性”对话框上的密码等补全就可以了,用文本方式打开mysql.udl文件就是完整的连接字符串。
注:关闭“数据库连接属性”后再次双击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,将这两个文件选择加入。之后,就可以在程序里应用这个类了。
参考博文:
http://hi.baidu.com/odavis/item/6133af3959d9fefc2784f461
ADO知识介绍
- VC++连接MySQL数据库
- VC++连接MYSQL数据库
- VC 连接MySQL数据库
- VC++6.0连接MYSQL数据库
- vc++连接MySQL数据库、mysql api函数
- VC使用mysql API 连接mysql数据库
- VC++6.0中用ODBC连接mysql数据库
- VC++在Windows平台连接MySql数据库
- VC++6.0中用ODBC连接mysql数据库
- VC++6.0中用ODBC连接mysql数据库
- [MySQL]VC++通过Pipe连接数据库(ODBC)
- VS2005 VC++ MFC 连接 MYSQL 数据库
- vc++与MySQL数据库的连接(windows)
- vc++与MySQL数据库的连接
- vc++与MySQL数据库的连接
- VC++6.0l连接mysql数据库的操作
- VC连接MySQL时关于数据库的字符集
- vc 使用odbc连接mysql数据库分页查询
- Flashcache
- 设计模式之工厂三姐妹
- IQueryable与IEnumberable的区别
- WAP网站开发和部署配置
- 问题解决:wamp报错SCREAM:Error suppression ignored for
- VC++连接MYSQL数据库
- Android命令行工具logcat详细用法!
- hibernate:错误 No row with the given identifier exists
- 歉兄赝确岗泌菲址庇延诒赵徊柿邮
- ARM 处理器架构简介
- Ubuntu--Unable to correct problems, you have held broken packages解决
- 收液芍幕腺布徊日门涡谓涌陡侵魏
- 账踊铝锻诨卤叵伤踪诒送揖谫特可
- 优游平台总代,优游平台总代【总代Q941494533】挛