编程词典
明日图书
明日软件
用户注册
用户登录
站内
  当前位置:编程词典服务网 >> 编程词典社区论坛 >> 使用ADO对象检索数据
  · 使用ADO对象检索数据

用户:  大麦
发帖:  430 篇
作品:  0 个
回复:  108 篇
技术分:  1156 分
等级:  
注册:  2010-05-11 09:09:40



发表于:2010-07-13 15:11:57
          楼主
使用ADO对象检索数据
通过ADO记录集对象可以检索数据,在ADO记录集对象中有个Filter成员变量,该变量中存放着SQL语句中WHERE子句的条件字符串,查询时对记录集进行过滤,返回过滤后的结果。
例如,使用ADO对象检索数据,程序设计步骤如下:
(1)创建一个基于对话框的应用程序,将对话框的Caption属性修改“使用ADO对象检索数据”。
(2)向对话框中添加一个列表视图控件、两个静态文本控件、一个组合框控件、一个编辑框控件和一个按钮控件,并为控件关联变量。
(3)创建一个ADO类。
(4)在StdAfx.h导入ADO动态链接库,代码如下。
#import "C:Program FilesCommon FilesSystemadomsado15.dll" no_namespace
 rename("EOF","adoEOF")rename("BOF","adoBOF")     //导入ADO动态链接库
 提示:我们在导入ADO动态链接库时,注意动态链接库msado15.dll的路径,它位于系统目录下,如果用户的系统安装在D盘,则msado15.dll位于D盘目录下。
(5)在对话框的OnInitDialog函数设置列表视图控件的扩展风格以及列标题,并向列表视图控件中插入数据,代码如下。
 m_Grid.SetExtendedStyle(LVS_EX_FLATSB       //扁平风格显示滚动条
  |LVS_EX_FULLROWSELECT              //允许整行选中
  |LVS_EX_HEADERDRAGDROP            //允许整列拖动
  |LVS_EX_ONECLICKACTIVATE           //单击选中项
  |LVS_EX_GRIDLINES);                 //画出网格线
 //设置列标题及列宽度
 m_Grid.InsertColumn(0,"编号",LVCFMT_LEFT,130,0);
 m_Grid.InsertColumn(1,"姓名",LVCFMT_LEFT,130,1);
 m_Grid.InsertColumn(2,"学历",LVCFMT_LEFT,130,2);
 ADO m_Ado;             //声明ADO类对象
 m_Ado.OnInitADOConn();          //连接数据库
 CString SQL = "select * from employees order by 编号 desc";  //设置查询字符串
 m_Ado.m_pRecordset = m_Ado.OpenRecordset(SQL);   //打开记录集
 while(!m_Ado.m_pRecordset->adoEOF)      //记录集不为空时循环
 {
  m_Grid.InsertItem(0,"");          //向列表视图控件中插入行
  //向列表视图控件中插入列
  m_Grid.SetItemText(0,0,(char*)(_bstr_t)m_Ado.m_pRecordset->GetCollect("编号"));
  m_Grid.SetItemText(0,1,(char*)(_bstr_t)m_Ado.m_pRecordset->GetCollect("姓名"));
  m_Grid.SetItemText(0,2,(char*)(_bstr_t)m_Ado.m_pRecordset->GetCollect("学历"));
  m_Ado.m_pRecordset->MoveNext();      //将记录集指针移动到下一条记录
 }
 m_Ado.CloseRecordset();         //关闭记录集
 m_Ado.CloseConn();          //断开数据库连接
 m_Combo.SetCurSel(0);          //设置组合框控件的选中项
(6)处理“检索”按钮的单击事件,在该事件中根据组合框和编辑框中的文本进行查询,将查询结果显示在列表中,代码如下。
void CSearchesDlg::OnButsearch()
{
 UpdateData(TRUE);
 CString strField;             //声明字符串变量
 m_Combo.GetLBText(m_Combo.GetCurSel(),strField);   //获得查询字段
 if(strField.IsEmpty() || m_Text.IsEmpty())      //检索信息不能为空
 {
  MessageBox("检索信息不能为空!");      //为空时弹出提示
  return;
 }
 ADO m_Ado;             //声明ADO类对象
 m_Ado.OnInitADOConn();          //连接数据库
 CString sql = "select * from employees";      //设置查询语句
 m_Ado.m_pRecordset = m_Ado.OpenRecordset(sql);    //打开记录集
 CString str;              //声明查询字符串
 str.Format("%s = '%s'",strField,m_Text);      //设置查询字符串
 m_Ado.m_pRecordset->Filter = (_bstr_t)str;      //进行查询
 m_Ado.m_pRecordset->Requery(0);       //用查询结果更新当前记录集
 m_Grid.DeleteAllItems();          //删除列表视图中的数据
 int i = 0;              //声明整型变量
 while(!m_Ado.m_pRecordset->adoEOF)       //记录集不为空时循环
 {
  m_Grid.InsertItem(i,"");         //向列表视图控件中插入行
  //向列表视图控件中插入列
  m_Grid.SetItemText(i,0,(char*)(_bstr_t)m_Ado.m_pRecordset->GetCollect("编号"));
  m_Grid.SetItemText(i,1,(char*)(_bstr_t)m_Ado.m_pRecordset->GetCollect("姓名"));
  m_Grid.SetItemText(i,2,(char*)(_bstr_t)m_Ado.m_pRecordset->GetCollect("学历"));
  m_Ado.m_pRecordset->MoveNext();      //将记录集指针移动到下一条记录
  i++;            //设置插入的行索引
 }
 m_Ado.CloseRecordset();         //关闭记录集
 m_Ado.CloseConn();         //断开数据库连接
}
实例的运行结果如图1所示。
 
图1  使用ADO对象检索数据
本帖赏分:0 分   回复数:0 篇     
修改   删除   引用   回复
该帖暂无回复!
吉林省明日科技有限公司提供技术支持. 
Copyright © 1999-2008 吉林省明日科技有限公司. 吉ICP备10002740
当前时区 GMT+8, 今天是 
刷新页面 - 关于我们 - 设为首页