Winform開發之DataGridView的增刪改


DataGridView是一個非常強大的控件,用法很多。這里介紹一個簡單的增刪改例子。

貼效果圖

右側輸入學生信息點擊新增,將數據增加到數據庫,並且加載到datagridview中,點擊選擇某條數據修改,將選擇的數據加載到右側的編輯框內,修改后點擊修改即可,也可直接刪除。

貼代碼

 public partial class Form1 : Form
    {
        
        private static string strConn = "Data Source=210.26.*.*;Initial Catalog=Test;User ID=sa;Password=****";
        private SqlConnection conn = new SqlConnection(strConn);
        private string sqlId = "";
        private SqlCommand cmd = null;
        private SqlDataAdapter da = null;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {                       
            //SqlDataReader studentlist = cmd.ExecuteReader();
            //bindingSource1.DataSource = studentlist;
            //dataGridView1.DataSource = bindingSource1;
            BindData();
        }
        private void BindData()
        {
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            sqlId = "select * from [Student] ";           
            cmd = new SqlCommand(sqlId, conn);
            da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds, "student");
            dataGridView1.AutoGenerateColumns = false;//此行指定不需要自動綁定數據列,數據列在dataGridView的屬性items集合里指定,必須放在綁定數據之前哦,放到后面是沒用的
            //dataGridView1.DataSource=ds.Tables["Student"];此處直接用DataTalbe綁定,與下面兩行代碼的效果是一樣的
            dataGridView1.DataSource = ds;//使用Dataset,單必須指定DataMember,因為DataSet是DataTable的集合,而datagridview只能綁定一個datatable
            dataGridView1.DataMember = "Student";
            if (conn.State == ConnectionState.Open)
            {
                conn.Close();
            }
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            try
            {
                string username = textBox1.Text;
                string homeaddress = textBox2.Text;
                string info = textBox3.Text;
                conn.Open();              
                //准備一個SQL語句,其中以@開頭的在這里只表示一種變量,一種參數。 
                sqlId = "Insert into Student(StudenTnAME, HomeAddress, Content)values(@StudenTnAME,@HomeAddress,@Content)";
                //創建一個參數數組,並且用花括號里面的值來初始化數組 
                SqlParameter[] parameters = new[] 
                 { 
                    //這里也有個初始化的過程,將name復制給@name,下面的是一樣的 
                    new SqlParameter("@StudenTnAME",username),//而小括號右邊的name就是程序一開始我們得到的用戶輸入的值 
                    new SqlParameter("@HomeAddress",homeaddress), 
                    new SqlParameter("@Content",info)
                 };
                cmd=conn.CreateCommand();
                //利用對象的屬性,把sql字符串放進命令(設置要對數據源執行的SQL語句) 
                cmd.CommandText = sqlId;
                //先利用對象的Parameters屬性獲取參數集,再將參數集的值附加到后面 
                cmd.Parameters.AddRange(parameters); 
                int x=cmd.ExecuteNonQuery();                
                if (x ==1)
                {
                    //如果添加成功,那么給用戶提示一下 
                    MessageBox.Show("添加成功");
                    textBox1.Text = "";
                    textBox2.Text = "";
                    textBox3.Text = "";                    
                } 

            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                conn.Close();              
            }
        }

        //點擊選中行,將內容放到編輯框內
        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells["studentname"].Value.ToString();
            textBox2.Text = dataGridView1.Rows[e.RowIndex].Cells["homeaddress"].Value.ToString();
            textBox3.Text = dataGridView1.Rows[e.RowIndex].Cells["info"].Value.ToString();
        }
       
        //對修改該內容進行保存
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            try
            {
                conn.Open();
                //准備一個SQL語句,拼接一個sql串,這里有別於ADD里面傳參 
                sqlId = "update Student set StudenTnAME='" + textBox1.Text + "',HomeAddress='" + textBox2.Text + "',Content='" + textBox3.Text + "' where ID=" + Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value.ToString());

                cmd = conn.CreateCommand();
                //利用對象的屬性,把sql字符串放進命令(設置要對數據源執行的SQL語句) 
                cmd.CommandText = sqlId;

                int x = cmd.ExecuteNonQuery();
                if (x == 1)
                {
                    //如果添加成功,那么給用戶提示一下 
                    MessageBox.Show("修改成功");
                    textBox1.Text = "";
                    textBox2.Text = "";
                    textBox3.Text = "";
                    BindData();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                conn.Close();               
            }
        }
        //刪除選中行
        private void btnDel_Click(object sender, EventArgs e)
        {
            try
            {
                conn.Open();
                //准備一個SQL語句,拼接一個sql串,這里有別於ADD里面傳參 
                sqlId = " delete from Student where ID=" +Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value.ToString());

                cmd = conn.CreateCommand();
                //利用對象的屬性,把sql字符串放進命令(設置要對數據源執行的SQL語句) 
                cmd.CommandText = sqlId;

                int x = cmd.ExecuteNonQuery();
                if (x == 1)
                {
                    //如果添加成功,那么給用戶提示一下 
                    MessageBox.Show("刪除成功");
                    textBox1.Text = "";
                    textBox2.Text = "";
                    textBox3.Text = "";
                    BindData();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                conn.Close();
            }
        }       
       
    }

就是這么簡單,但是我們可以看到數據的操作是比較繁瑣的,后面的博文會封裝一個數據庫操作類,進行操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM