MFC连接MySQL7.9数据库程序教程

时间:2021-05-10 13:10:42


MFC连接数据库常用的方法有三种:

1.ODBC

2.MFC数据库类

3.DAO数据库

本文采用第二种方法(据说第三种方法最简单,管他呢,MFC数据库类已经很白痴了)

第一步:配置DSN,方法如下:

http://download.csdn.net/detail/feilongzaitianhehe/9360493

安装Mysql ODBC driver,下载路径

http://download.csdn.net/detail/feilongzaitianhehe/9360669

第二步:新建一个MFC应用程序,然后随便弄个鼠标响应事件或者菜单响应事件什么的。添加如下代码:

try 
{
CDatabase db;
if( db.Open(NULL,FALSE,FALSE,"ODBC;DSN=mysql5.3 Unicode-user;UID=root;PWD=abcdef"))
{
db.ExecuteSql("insertinto UserMaster values( 'TestID' , 'Test User Name' , 0)");
db.Close();
}
}
catch (CDBException* e)
{
AfxMessageBox( e->m_strError);
e->Delete();
}<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">      </span>

具体的SQL语句根据你的字段不同而不同啦,然后去数据库看一下数据插入了没有,如果插入了,恭喜你,MFC连接数据库最头疼的部分搞定了,接下来的事情就是查一下MFC类库,进行响应操作而已,很easy。

第三步:查询数据

   其实有了上面那几行代码进行增删改都没有问题了,下面讲解一下查询数据。MFC提供了一个CRecordset对象,(用以代表一个表,我是这么理解的,事实也是这样的),我们可以通过类向导新建一个代表一张表的CRecordset类。方法如下:

  

 try
{
CRecordsetrs(&db);
rs.Open(CRecordset::forwardOnly,_T("SELECT * FROM vendors"));

CDBVariantvarValue;
shortnFields=rs.GetODBCFieldCount();
intdatatype=0;
for(shortindex=0; index<nFields; index++)
{
rs.GetFieldValue(index,varValue);
datatype=varValue.m_dwType;

if(index==0)
{
Id_Str.Format(L"%ld",varValue.m_lVal);
}
else
if(index==1)
{
if(datatype==0)
Name_Str="";
else
Name_Str=*varValue.m_pstring;
}
else
if(index==2)
{
if(datatype==0)
Address_Str="";
else
Address_Str=*varValue.m_pstring;
}
else
if(index==3)
{
if(datatype==0)
City_Str="";
else
City_Str=*varValue.m_pstring;
}
else
if(index==4)
{
if(datatype==0)
State_Str="";
else
State_Str=*varValue.m_pstring;
}
else
if(index==5)
{
if(datatype==0)
Zip_Str="";
else
Zip_Str=*varValue.m_pstring;
}
else
if(index==6)
{
if(datatype==0)
Country_Str="";
else
Country_Str=*varValue.m_pstring;
}
}
UpdateData(FALSE);
rs.Close();
AfxMessageBox(L"QuaryOne Row Success!");
}
catch(CDBException*Err)
{
AfxMessageBox(Err->m_strError);
Err->Delete();
}