开发者社区> 余二五> 正文

4-2 ADO.NET-查询和检索数据4

简介:
+关注继续查看

3.案例学习:SQLDataAdapter完成对数据库的删除修改和插入

本实验目标是要求编写一个应用程序,利用SQLDataAdapter对象实现可以添加、修改、删除学生基本信息的功能。用户界面如图442所示:
4-42 学生基本信息应用程序界面图
u实验步骤(1):
VS.NET 2005中新建一个名为示例2的基于Windows的项目。将默认窗体重命名为form9.cs
u实验步骤(2):
从工具箱之中拖拽一个dataGridView控件到Form窗体,ColumnHeadersHeightSizeMode属性设置为“AutoSize”;另外还要向Form窗体下侧添加二个Button控件,text属性分别设置为“更改”、“删除”。
u实验步骤(3):
数据库的设计参见图443
4-43 数据库设计图
数据库为school,共有六个表,该应用程序中只使用了表student。具体字段设计情况请参见图460。数据表student中可以先存放一部分数据,便于后面处理。数据库环境是SQL Server 2005
u       实验步骤(4):
用鼠标双击各个Button控件,进入.cs文件编辑状态准备进行开发。代码加下:
//==========动态程序部分================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsApplication1
{
    public partial class Form9 : Form
    {
        private SqlConnection mycon;
        private SqlDataAdapter myada;
        private SqlCommand mycomd;
        private SqlCommandBuilder mycbd;
        private DataSet myset;
        public Form9()
        {
            InitializeComponent();
            mycon = new SqlConnection("Data Source=LKJ\\SQLEXPRESS;Initial Catalog=school;Integrated Security=True");
            mycomd = new SqlCommand("select * from student",mycon);
            myada = new SqlDataAdapter();
            myada.SelectCommand = mycomd;
            mycbd = new SqlCommandBuilder(myada);
            myset = new DataSet();
            myada.TableMappings.Add("student","student");
            myada.TableMappings[0].ColumnMappings.Add("SNO""学号");
            myada.TableMappings[0].ColumnMappings.Add("SNAME""姓名");
            myada.TableMappings[0].ColumnMappings.Add("SEX""性别");
            myada.TableMappings[0].ColumnMappings.Add("BIRTHDAY""生日");
            myada.TableMappings[0].ColumnMappings.Add("CLASS""班级");
        }
        /// <summary>
        /// 数据修改
        /// </summary>
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                //将更改的数据更新到数据表里
                myada.Update(myset.Tables["student"].GetChanges());
                MessageBox.Show("数据库修改成功","成功信息");
                //DataTable接受更改,以便为下一次更改作准备
                myset.Tables["student"].AcceptChanges();
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
        /// <summary>
        /// 初始化数据
        /// </summary>
        private void Form9_Load(object sender, EventArgs e)
        {
            try
            {
                myada.Fill(myset, "student");
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                mycon.Close();
            }
            dataGridView1.DataSource = myset.Tables["student"].DefaultView;
        }
        /// <summary>
        /// 数据删除
        /// </summary>
        private void button2_Click(object sender, EventArgs e)
        {
if (MessageBox.Show("确定要删除当前行数据?"""MessageBoxButtons.OKCancel) == DialogResult.OK)
            {
                try
                {
                    //DataTable中删除当前选中的行
                    myset.Tables[0].Rows[dataGridView1.CurrentRow.Index].Delete();
                    //将更改的数据更新到数据表里
                    myada.Update(myset.Tables[0].GetChanges());
                    MessageBox.Show("数据删除成功!");
                    //DataTable接受更改,以便为下一次更改作准备
                    myset.Tables[0].AcceptChanges();
                }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
            else
            {
                //取消对DataTable的更改
                myset.Tables[0].RejectChanges();
            }
        }
    }
}

4.SqlCommandBuilder对象

前面示例代码中多次遇到SqlCommandBuilder对象。那么SqlCommandBuilder对象的用途是什么呢?SqlCommandBuilder对象自动生成针对单个表的命令,用于将对DataSet所做的更改与关联的SQL Server数据库的更改相协调。基于适配器SqlDataAdapterSELECT语句使用SqlCommandBuilder对象自动在数据适配器SqlDataAdapter中创建其他命令。
利用SqlCommandBuilder对象能够自动生成:INSERT命令;UPDATE命令;DELETE命令;应用SqlCommandBuilder对象的语法见图444所示,这里只是让读者了解SqlCommandBuilder对象的作用,没有做深入探讨。
4-44 应用SqlCommandBuilder对象的语法图




本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/216030,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
数据中台核心方法论--OneModel为何需要产品化支撑?
作者:渊洛 转自:阿里巴巴数据中台官网 https://dp.alibaba.com 什么是产品化大部分创业公司都是从一个伟大的想法创意开始的,并且需要有一堆技术专家来实现。我们清楚,伟大的技术并不等同于和伟大的产品,技术可以解决问题,但如果它没有办法法规模化,那这些技术或者能力对用户便没有直接价值,只有把它们拆解,打包,设计成产品,才能真正的解决用户问题,把某些技术或者能力变成产品的过程这个过程,就是产品化。
6761 0
多地iPhone用户遭盗刷 企业数据泄露的结无解?
对于企业来说,大数据在如今已经是必不可少的一项技术。不管是大型科技互联网公司,还是线下消费实体店,社会各行各业都已进入大数据时代。 然而就在大数据快速发展的这几年,国内外涉及数据安全与个人隐私的舆情事件不断发生,涉及人们衣食住行的隐私泄露案频出。
1207 0
大神手把手教你:(Python)序列数据的One Hot编码
不懂One Hot编码?让大神手把手教你(文中代码可以直接运行),用小例子清晰明了的带你进入One hot 编码!
4957 0
.NET数据库编程求索之路--6.使用ADO.NET实现(三层架构篇-使用List传递数据-基于存储过程)(1)
6.使用ADO.NET实现(三层架构篇-使用List传递数据-基于存储过程)(1)    【 夏春涛 email: xchuntao@163.com  blog: http://www.cnblogs.
769 0
VB.NET版机房收费系统---组合查询
       查询的意思就是查找,寻找,指在某一个或几个地方找出自己所要的信息,假如我想搜索一下我自己写的博客,名字叫做初雪之恋,我在百度的搜索框中输入丁国华三个字,会有怎样的惊喜等着我?                          ...
815 0
php实现查询功能
简单的php实现查询的功能,直接附上源码:
1187 0
阿里首次披露中台战略:OneData的统一数据标准和实时数据分析是核心
近日,阿里巴巴公共数据平台负责人罗金鹏首次对外披露了在阿里中台战略下,如何推动数据中台落地的个中细节,其中OneData的统一数据标准和实时数据分析是核心。
20947 0
+关注
20381
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载