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(); } } }
就是這么簡單,但是我們可以看到數據的操作是比較繁瑣的,后面的博文會封裝一個數據庫操作類,進行操作。