请问,mfc连mysql,使用ado,已安装myodbc,配置数据源,接下去的具体如何操作,谢谢 最好有例程代码,多谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通过ODBC后所有数据库的操作都是一样的,逆当他是SQL SERVER就可以了。 VC下用各种方法访问数据库(SQL Server) 第一种:DNS方式 在编程之前在你的ODBC数据源里要建立相应的数据源,该实验用的是SQL Server,在DNS中的名字为mysql。1. 建立MFC标准程序(我用的是基于对话的,名字是Datebase),在stdafx.h中加入#import "c:\\program files\\common files\\system\\ado\\msado15.dll" no_namespace rename("EOF","adoEOF") 2. 在DatabaseDlg.h的类定义中添加一个函数HRESULT ComInit();(COM 使用时初始化)3. 在DatebaseDlg.cpp中加入如下内容:全局变量 _ConnectionPtr m_pConnection; _RecordsetPtr m_pRecordset; 在BOOL CDatebaseDlg::OnInitDialog()中添加代码:在// Add "About..." menu item to system menu.下加入HRESULT hr; hr = ComInit(); try { hr = m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象 if(SUCCEEDED(hr)) { hr = m_pConnection->Open("Data Source=mysql;UID=sa;PWD=;","","",adModeUnknown);//这里面的mysql要在ODBC里建立的数据 } } catch(_com_error e) //捕捉异常 { CString errormessage; errormessage.Format("连接数据库失败!错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage); //显示错误信息 }4. 定义HRESULT CDatebaseDlg::ComInit()HRESULT CDatebaseDlg::ComInit() { HRESULT hr = S_OK; // 默认返回值 if FAILED(CoInitialize(NULL)) // COM 初始化调用 { CoUninitialize(); hr = E_UNEXPECTED; } return hr; }5. 在面板上加上一个button(它被命名为search,它的ID为IDC_Search)添加代码如下: void CDatebaseDlg::OnSearch() { // TODO: Add your control notification handler code here m_pRecordset.CreateInstance("ADODB.Recordset"); _variant_t RecordsAffected; ///执行SQL统计命令得到包含记录条数的记录集m_pRecordset = m_pConnection->Execute("SELECT COUNT(*) FROM student",&RecordsAffected,adCmdText); _variant_t vIndex = (long)0; _variant_t vCount = m_pRecordset->GetCollect(vIndex);///取得第一个字段的值放入vCount变量 m_pRecordset->Close(); //关闭记录集 CString message; message.Format("共有%d条记录",vCount.lVal); AfxMessageBox(message); ///显示当前记录条数 } vulcan_1982(飞飞) ,楼主说的是用MYSQL,不是用DNS为"MYSQL"的SQLSERVER啊! TO : wuchi(风云) 其实楼主想问的就是连接的问题,因为我也是初学者,我理解楼主想知道什么.可惜我也不会MYSQL. 关于IDOK问题 Getcollect() 数据为空的时候我进行判断还是有错误为什么!!! 程序在debug版不会当,但是release版会当,有哪些原因? 如何将一些点拟合成平滑的正玄波 如何在程序中输出特殊字符? 坐标转换的问题!急~ 关于对话框输入的简单问题? 关于一个vc中打开文件的问题 Shift+F1。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 今天收到过多病毒邮件,心情不爽,散分!大家来安慰我几句。 这个编译错误是什么意思啊?---------------在线等---急急! 我为什么用VC++编译正版Linux0.01代码还提示找不到头文件?
第一种:DNS方式
在编程之前在你的ODBC数据源里要建立相应的数据源,该实验用的是SQL Server,在DNS中的名字为mysql。
1. 建立MFC标准程序(我用的是基于对话的,名字是Datebase),在stdafx.h中加入#import "c:\\program files\\common files\\system\\ado\\msado15.dll" no_namespace rename("EOF","adoEOF")
2. 在DatabaseDlg.h的类定义中添加一个函数HRESULT ComInit();(COM 使用时初始化)
3. 在DatebaseDlg.cpp中加入如下内容:全局变量 _ConnectionPtr m_pConnection; _RecordsetPtr m_pRecordset; 在BOOL CDatebaseDlg::OnInitDialog()中添加代码:
在// Add "About..." menu item to system menu.下加入
HRESULT hr;
hr = ComInit();
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象
if(SUCCEEDED(hr))
{
hr = m_pConnection->Open("Data Source=mysql;UID=sa;PWD=;","","",adModeUnknown);
//这里面的mysql要在ODBC里建立的数据
}
}
catch(_com_error e) //捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage); //显示错误信息
}
4. 定义HRESULT CDatebaseDlg::ComInit()
HRESULT CDatebaseDlg::ComInit()
{
HRESULT hr = S_OK; // 默认返回值
if FAILED(CoInitialize(NULL)) // COM 初始化调用
{
CoUninitialize();
hr = E_UNEXPECTED;
}
return hr;
}
5. 在面板上加上一个button(它被命名为search,它的ID为IDC_Search)添加代码如下:
void CDatebaseDlg::OnSearch()
{
// TODO: Add your control notification handler code here
m_pRecordset.CreateInstance("ADODB.Recordset");
_variant_t RecordsAffected;
///执行SQL统计命令得到包含记录条数的记录集
m_pRecordset = m_pConnection->Execute("SELECT COUNT(*) FROM student",&RecordsAffected,adCmdText);
_variant_t vIndex = (long)0;
_variant_t vCount = m_pRecordset->GetCollect(vIndex);///取得第一个字段的值放入vCount变量
m_pRecordset->Close(); //关闭记录集
CString message;
message.Format("共有%d条记录",vCount.lVal);
AfxMessageBox(message);
///显示当前记录条数
}
因为我也是初学者,我理解楼主想知道什么.
可惜我也不会MYSQL.