• 使用ADO对象添加、修改、删除数据


    使用ADO对象对数据库中的数据进行添加、修改和删除等操作。首先创建一个ADO类,通过ADO类连接数据库,并打开记录集。
    例如,使用ADO对象添加、修改、删除数据,程序设计步骤如下:
    (1)创建一个基于对话框的应用程序,将对话框的Caption属性修改“使用ADO对象添加、修改、删除数据”。
    (2)向对话框中添加一个列表视图控件、3个静态文本控件、3个编辑框控件和4个按钮控件,并为控件关联变量。
    (3)创建一个ADO类,请参照封装ADO对象的内容。
    (4)在StdAfx.h导入ADO动态链接库,代码如下。
    #import "C:Program FilesCommon FilesSystemadomsado15.dll" no_namespace
     rename("EOF","adoEOF")rename("BOF","adoBOF")     //导入ADO动态链接库
    (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,110,0);
     m_Grid.InsertColumn(1,"姓名",LVCFMT_LEFT,110,1);
     m_Grid.InsertColumn(2,"学历",LVCFMT_LEFT,110,2);
     AddToGrid();           //向列表中插入数据
    (6)添加AddToGrid函数,用来向列表视图控件中插入数据,代码如下。
    void CUseAdoDlg::AddToGrid()
    {
     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();         //断开数据库连接
    }
    (7)处理“添加”按钮的单击事件,将编辑框中的文本添加到数据库中,代码如下。
    void CUseAdoDlg::OnButadd()
    {
     UpdateData(TRUE);
     if(m_ID.IsEmpty() || m_Name.IsEmpty() || m_Culture.IsEmpty()) //数据不能为空
     {
      MessageBox("基础信息不能为空!");     //为空时弹出提示信息
      return;
     }
     ADO m_Ado;           //声明ADO类对象
     m_Ado.OnInitADOConn();         //连接数据库
     CString sql = "select * from employees";      //设置查询字符串
     m_Ado.m_pRecordset = m_Ado.OpenRecordset(sql);   //打开记录集
     try
     {
      m_Ado.m_pRecordset->AddNew();       //添加新行
      //向数据库中插入数据
      m_Ado.m_pRecordset->PutCollect("编号",(_bstr_t)m_ID);
      m_Ado.m_pRecordset->PutCollect("姓名",(_bstr_t)m_Name);
      m_Ado.m_pRecordset->PutCollect("学历",(_bstr_t)m_Culture);
      m_Ado.m_pRecordset->Update();       //更新数据表记录
      m_Ado.CloseRecordset();        //关闭记录集
      m_Ado.CloseConn();        //断开数据库连接
     }
     catch(...)            //捕捉可能出现的错误
     {
      MessageBox("操作失败");        //弹出错误提示
      return;
     }
     MessageBox("添加成功");         //提示操作成功
     m_Grid.DeleteAllItems();          //删除列表控件
     AddToGrid();           //向列表中插入数据
    }
    (8)处理列表视图控件的单击事件,在列表项被选中时,将列表项中的数据显示到编辑框中,代码如下。
    void CUseAdoDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
    {
     int pos    = m_Grid.GetSelectionMark();      //获得当前选中列表项索引
     //获得列表项数据
     m_ID     = m_Grid.GetItemText(pos,0);
     m_Name  = m_Grid.GetItemText(pos,1);
     m_Culture = m_Grid.GetItemText(pos,2);
     UpdateData(FALSE);         //更新控件显示
     *pResult = 0;
    }
    (9)处理“修改”的单击事件,根据编辑框中的数据修改数据库中的数据,代码如下。
    void CUseAdoDlg::OnButmod()
    {
     UpdateData(TRUE);
     if(m_ID.IsEmpty() || m_Name.IsEmpty() || m_Culture.IsEmpty()) //数据不能为空
     {
      MessageBox("基础信息不能为空!");     //为空时弹出提示信息
      return;
     }
     int pos   = m_Grid.GetSelectionMark();      //获得当前选中列表项索引
     ADO m_Ado;           //声明ADO类对象
     m_Ado.OnInitADOConn();         //连接数据库
     CString sql = "select * from employees";      //设置查询字符串
     m_Ado.m_pRecordset = m_Ado.OpenRecordset(sql);   //打开记录集
     try
     {
      m_Ado.m_pRecordset->Move((long)pos,vtMissing);   //将记录集指针移动到选中的记录
      //设置选中记录的文本
      m_Ado.m_pRecordset->PutCollect("编号",(_bstr_t)m_ID);
      m_Ado.m_pRecordset->PutCollect("姓名",(_bstr_t)m_Name);
      m_Ado.m_pRecordset->PutCollect("学历",(_bstr_t)m_Culture);
      m_Ado.m_pRecordset->Update();      //更新记录集
      m_Ado.CloseRecordset();        //关闭记录集
     m_Ado.CloseConn();          //断开数据库连接
     }
     catch(...)             //捕捉可能出现的错误
     {
      MessageBox("操作失败");        //弹出错误提示
      return;
     }
     MessageBox("添加成功");         //提示操作成功
     m_Grid.DeleteAllItems();          //删除列表控件
     AddToGrid();            //向列表中插入数据
    }
     提示:在catch语句部分我们使用了“…”表示捕捉所有错误,也就是说在try语句部分产生任何错误,都会进入catch语句块部分进行处理。
    (10)处理“删除”按钮的单击事件,删除列表框中被选中的列表项,代码如下。
    void CUseAdoDlg::OnButdel()
    {
     int pos   = m_Grid.GetSelectionMark();      //获得当前选中列表项索引
     ADO m_Ado;           //声明ADO类对象
     m_Ado.OnInitADOConn();         //连接数据库
     CString sql = "select * from employees";      //设置查询字符串
     m_Ado.m_pRecordset = m_Ado.OpenRecordset(sql);   //打开记录集
     try
     {
      m_Ado.m_pRecordset->Move(pos,vtMissing);    //将记录集指针移动到选中的记录
      m_Ado.m_pRecordset->Delete(adAffectCurrent);   //删除选中的记录
      m_Ado.m_pRecordset->Update();      //更新记录集
      m_Ado.CloseRecordset();        //关闭记录集
      m_Ado.CloseConn();        //断开数据库连接
     }
     catch(...)            //捕捉可能出现的错误
     {
      MessageBox("操作失败");        //弹出错误提示
      return;
     }
     MessageBox("删除成功");         //提示操作成功
     OnButclear();           //清空编辑框中数据
     m_Grid.DeleteAllItems();          //删除列表控件
     AddToGrid();           //向列表中插入数据
    }

  • 相关阅读:
    总结系列_3(opencv中c版本和c++版本区别体验,续...)
    深入理解JavaScript系列(29):设计模式之装饰者模式
    深入理解JavaScript系列(33):设计模式之策略模式
    深入理解JavaScript系列(35):设计模式之迭代器模式
    深入理解JavaScript系列(36):设计模式之中介者模式
    深入理解JavaScript系列(34):设计模式之命令模式
    深入理解JavaScript系列(31):设计模式之代理模式
    深入理解JavaScript系列(37):设计模式之享元模式
    深入理解JavaScript系列(32):设计模式之观察者模式
    大叔手记(21):汤姆大叔博客园开博100天总结
  • 原文地址:https://www.cnblogs.com/jinjiangongzuoshi/p/3155792.html
Copyright © 2020-2023  润新知