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 数据库的更改相协调。基于适配器 SqlDataAdapter SELECT语句使用 SqlCommandBuilder 对象自动在数据适配器 SqlDataAdapter 中创建其他命令。
利用 SqlCommandBuilder 对象能够自动生成: INSERT 命令; UPDATE 命令; DELETE 命令;应用 SqlCommandBuilder 对象的语法见图444所示,这里只是让读者了解 SqlCommandBuilder 对象的作用,没有做深入探讨。
4-44 应用SqlCommandBuilder对象的语法图




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

目录
相关文章
|
29天前
|
开发框架 JavaScript .NET
asp.net中条件查询+分页
asp.net中条件查询+分页
15 1
|
29天前
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
8 0
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
61 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
4月前
|
SQL 开发框架 .NET
|
4月前
|
XML SQL 开发框架
|
29天前
|
SQL 数据库
使用ADO.NET查询和操作数据
使用ADO.NET查询和操作数据
9 0
|
2月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
67 0
|
4月前
|
开发框架 .NET
|
4月前
|
开发框架 .NET C#
|
4月前
|
Oracle 关系型数据库 数据管理
.NET医院检验系统LIS源码,使用了oracle数据库,保证数据的隔离和安全性
LIS系统实现了实验室人力资源管理、标本管理、日常事务管理、网络管理、检验数据管理(采集、传输、处理、输出、发布)、报表管理过程的自动化,使实验室的操作人员和管理者从繁杂的手工劳作中解放出来,提高了检验人员的工作效率和效益,降低了劳动成本和差错发生率。