使用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();           //向列表中插入数据
}
使用ADO对象添加、修改、删除数据的更多相关文章
- Oracle的学习二:表管理(数据类型、创建/修改表、添加/修改/删除数据、数据查询)
		
1.Oracle表的管理 表名和列名的命名规则: 必须以字母开头: 长度不能超过30个字符: 不能使用oracle的保留字: 只能使用如下字符:A-Z, a-z, 0-9, $, # 等. Oracl ...
 - Web  1三级联动 下拉框    2添加修改删除  弹框
		
Web 三级联动 下拉框 using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...
 - JavaWeb_day03_员工信息添加修改删除
		
day03员工的添加,修改,删除 修改功能 思路 : 点击修改员工数据之后,跳转到单行文本,查询要修改的员工id的全部信息,主键id设置为readonly,其余的都可以修改, 修改之后,提交按钮,提交 ...
 - 打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除  vue表格组件  vue分页组件
		
第三章 建议学习时间8小时 总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章] 演示地址:后台:demo ...
 - 【转】C#添加修改删除文件文件夹大全
		
[转]C#添加修改删除文件文件夹大全 C#添加修改删除文件文件夹大全 StreamWriter sw = File.AppendText(Server.MapPath(".")+& ...
 - SpringBoot定时任务升级篇(动态添加修改删除定时任务)
		
需求缘起:在发布了<Spring Boot定时任务升级篇>之后得到不少反馈,其中有一个反馈就是如何动态添加修改删除定时任务?那么我们一起看看具体怎么实现,先看下本节大纲: (1)思路说明: ...
 - 关于给javascript对象添加、删除、修改对象的属性
		
以下是自己总结的几种方法 利用动态特性 function Person(){}; var person = new Person(); person.name = 'yy'; person.gende ...
 - ORM简介 单表添加修改删除表记录
		
---------------------------------------------------------------目标既定,在学习和实践过程中无论遇到什么困难.曲折都不灰心丧气,不轻易改变 ...
 - python对MySQL进行添加修改删除以及字符串的操作
		
# coding=UTF-8 import MySQLdb def dbDperate(sql,param): "定义数据库的添加,修改和删除操作" #获取数据库的连接对象 con ...
 
随机推荐
- dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解
			
http://blog.sina.com.cn/s/blog_8b5bb24f01016y3o.html 一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指 ...
 - 肢体语言心理学+FBI阅人术(行为心理学) 用最短的时间了解一个人
			
肢体语言心理学 如何从站姿判断人 每个人都有自己习惯的站立姿势.美国夏威夷大学心理学家指出,不同的站姿可以显示出一个人的性格特征. 站立时习惯把双手插入裤袋的人:城府较深,不轻易向人表露内心 ...
 - PMP培训感想
			
终于等到了C打头的邮件,等了几个星期,悬着的心终于放了.1P4M,基本跟平时模块成绩一致.当初模考时,第一次考了126,还算比较满意,毕竟还没开始苦逼看嘛,悲剧的是不管后面再怎么努力,成绩始终在1 ...
 - memcached + php 扩展  for ubuntu
			
1.安装memcached apt-get install memcached 2.安装php memcached 扩展 apt-get install php5-memcache 3.启动memca ...
 - HDU  3452  Bonsai
			
可以转化成最小割的求解,题目其实就是要求把点分成两个集合,增加一个超级汇点,一部分的点在根节点所在集合内,一部分节点在超级汇点所在的集合内,这两就分开了,又要求费用最小,那么就是最小割. #inclu ...
 - Android截图命令screencap
			
查看帮助命令 bixiaopeng@bixiaopeng ~$ adb shell screencap -v screencap: invalid option -- v usage: screenc ...
 - R语言笔记5--读数据
			
1.读文本文件数据 (1)先设置工作目录,把文本文件放于该目录下 备注:在记事本里写完数据后,按一下回车,负责在R语言中出现错误 (2)读剪贴板 文本或EXCEL的数据均可通过剪贴板操作 (3)读ex ...
 - R语言笔记1--向量、数组、矩阵、数据框、列表
			
注释:R语言是区分大小写的 1.向量 R语言中可以将各种向量赋值为一个变量,这种赋值操作符就是等号“=”,也可以使用“<-”. 1)产生向量 (1)函数c() 例如:x1=c(2,4,6,8,0 ...
 - bfs   UESTC 381 Knight and Rook
			
http://acm.uestc.edu.cn/#/problem/show/381 题目大意:给你两个棋子:车.马,再给你一个n*m的网格,从s出发到t,你可以选择车或者选择马开始走,图中有一些障碍 ...
 - 理解Java String和String Pool
			
本文转载自: http://blog.sina.com.cn/s/blog_5203f6ce0100tiux.html 要理解 java中String的运作方式,必须明确一点:String是一个非可变 ...