256上位机VC MFC使用ODBC进行条件查询
256上位机VC MFC使用ODBC进行条件查询
功能展示
为了在数据库查询时有效的提高效率,我胶就得有条件的进行查询而不是泛泛的查找,当前例程演示通过学号及毕业时间查询我们想要的结果,点击<按学号查询>会弹出对话框,输入学号就可查询满足条件的结果,同样按毕业时间查询也是如此
要点提示
要注意的是在执行记录集查询的时候要先关闭记录集,然后面执行查询工作,查询结束后再打开记录集,这样查询返回的结果才是我们想要的,不然的话可以有会出错或查得的结果不是 我们想要的; Crecodset类其实就是代表一个记录集,默认情况下代表全部的记录,且按照数据库存储的顺序返回,但在多数的数据库操作中,最常见的是想得到满足一定条件的记录集。因而MFC在Crecodset类中添加有一变量m_strFilter,我们只要通过对此变量的赋值就可以实现记录集的过虑功能; 实现功能 1.按照前面例程或当前视频中的方法,用根目录的Student.mdb创建数据源; 2.新建一个应用前面数据源的基于单文档的应用程序,具体过程可参考视频学习; 3.按程序界面,添加三编辑框,ID分别为IDC_ID,IDC_NAME,IDC_GRADYEAR,分别关联SET类中的三个变量 m_ID; m_Name; m_GradYear;
再分别添加按钮<按学号查询)><按毕业时间查询>,关联函数 - void CGkbc8View::OnRecordId()
- {
- CIDDlg dlg;//声明类对象
- CString flstring="ID=";
- if (IDOK == dlg.DoModal())//显示对话框
- {
- flstring += dlg.m_sID;
- m_pSet->Close();//关闭记录集
- m_pSet->m_strFilter=flstring;//查询条件
- m_pSet->Open();//执行查询操作
- int recCount=m_pSet->GetRecordCount();//得到记录集的条数
- if (recCount==0)//检查是否为空
- {
- MessageBox("没有匹配的记录");
- m_pSet->Close();
- m_pSet->m_strFilter="";
- m_pSet->Open();
- }
- UpdateData(FALSE);//更新对话框
- }
- }
复制代码- void CGkbc8View::OnRecordGradyear()
- {
- CYearDlg dlg;//声明类对象
- CString flstring="GradYear=";
- if ( IDOK == dlg.DoModal())//是否选择“OK”按钮
- {
- flstring += dlg.m_sYear;
- m_pSet->Close();//关闭记录集
- m_pSet->m_strFilter=flstring;//查询条件
- m_pSet->Open();//执行查询操作
- int recCount=m_pSet->GetRecordCount();//得到记录集的条数
- if (recCount==0)//是否有记录
- {
- MessageBox("没有匹配的记录");
- m_pSet->Close();
- m_pSet->m_strFilter="";
- m_pSet->Open();
- }
- UpdateData(FALSE);//更新对话框
- }
- }
复制代码4.在前面两函数中可以看到有两个对话框CYearDlg , CIDDlg ,这是我们自己新添加的,插入两对话框资源,分别关联对话框类CYearDlg , CIDDlg ,给CYearDlg 添加一编辑框关联变量CString m_sYear , 给CIDDlg添加一编辑框关联变量m_sID,记得把此两对话框在头文件包含在view类中; 我们来演示下功能实现的整个过程
|