天天看點

4-2 ADO.NET-查詢和檢索資料9

本實驗目标是通過本案例您将學習了解到:

nDataGridView的資料綁定技術;

nDataGridView的更新和删除技術。

使用者界面如圖4-60所示:

圖4-60 DataGridview基本的資料操作應用程式界面圖

u實驗步驟(1):

在VS.NET 2005中建立一個名為示例4的基于Windows的項目。将預設窗體重命名為form9.cs。

u實驗步驟(2):

從工具箱之中拖拽一個dataGridView控件到Form窗體,ColumnHeadersHeightSizeMode屬性設定為“AutoSize”;另外還要向Form窗體下側添加二個Button控件,text屬性分别設定為“更改”、“删除”。

u實驗步驟(3):

資料庫的設計參見圖4-61:

圖4-61  資料庫設計圖

資料庫為school,共有六個表,該應用程式中隻使用了表student。具體字段設計情況請參見圖4-79。資料表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());

        /// 初始化資料

        private void Form9_Load(object sender, EventArgs e)

                myada.Fill(myset, "student");

            finally

                mycon.Close();

            dataGridView1.DataSource = myset.Tables["student"].DefaultView;

        /// 資料删除

        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();

    }

}

本文轉自 qianshao 51CTO部落格,原文連結:http://blog.51cto.com/qianshao/216108,如需轉載請自行聯系原作者