visual studio 2010 MFC通过ODBC访问MySQL数据库

来源:互联网 发布:制衣打飞软件 编辑:程序博客网 时间:2024/05/18 12:37
连接数据库后,要通过MFC得到数据库中的值,参考了很多网上例程,终于读取到数据库的值了。
1、MFC模块关于连接读取数据库有三个类,CDatebase,CRecordSet类,CRecordView类,本次使用了前两种类
2、
void Cvs_mfc02Dlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
char ch5[20],ch6[20];
CString str1,str2;
GetDlgItemText(IDC_EDIT1,ch5,20);  //读取编辑框内容
GetDlgItemText(IDC_EDIT2,ch6,20);
str1=ch5;
str1+=ch6;   //将输入的账户密码合成到一处字符串上
try           //try catch 语句
{
CDatabase db;
CRecordset rs(&db);
BOOL flag=0;  //flag标志用来判定输入的账号密码与数据库中的账号密码是否相等
if(db.Open(_T("qq_data")))
{
  rs.Open(CRecordset::forwardOnly,_T("SELECT * FROM table_qq"));//通过CRecordset类,记录整个表中数据
  CString varValue;
  short nFields=rs.GetODBCFieldCount(); //计算表中每行字段个数
  while(!rs.IsEOF())
  {
for(short index=0;index<nFields;index++)
{
rs.GetFieldValue(index,varValue);
 //读取表格中每个单元数值,由于建立的表格中都是字符,所以定义的varValue类型是CString,否则应使用CDBVariant类,不过我暂时没搞清楚怎么使用这个类
if(index==0)
{
str2="";
}
else str2+=varValue;  //将表格中存储的账号密码合成到一处字符串中
                    
}
if(str1==str2)
{
  MessageBox("登陆成功!");
  flag=TRUE;    //flag标志用来判定输入的账号密码与数据库中的账号密码是否相等
  break;
}
rs.MoveNext();  //移动到下一行
  }
  if(flag)  //如果登陆成功
  {
ShowWindow(SW_HIDE);//先隐藏登陆界面
            Cvs_mfc02de dlg;  //调用显示聊天界面
            dlg.DoModal();
                 DestroyWindow();  //推出程序
  }
  else
  {
MessageBox("密码错误");
  }
rs.Close();
db.Close();//关闭数据库
}
}
catch(CDBException* e)
{
AfxMessageBox(e->m_strError);
e->Delete();
}


}
3、上面是在连接mysql数据库基础上,可以实现读取数据库内存储值。
0 0