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


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();
         }        

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值