Dưới đây là ví dụ để Insert, Update và Delete dự liệu trong database từ DataGridview. Với ví dụ này, chúng ta có thể sửa, xóa, thêm dữ liệu trực tiếp trên Gridview. Những thay đổi trên Gridview sẽ thông qua DataSource cập nhật trực tiếp lên DataTable. Sau khi bấm Save, DataAdapter sẽ gọi hàm Update cho DataTable, dữ liệu sẽ được cập nhật vào Database. Luồng dữ liệu được thể hiện như sau
DataGridview <=> DataSource <=> DataTable <=> DataAdapter <=> Database
– Ở chiều View: Dữ liệu từ database sẽ được DataAdapter thông qua SelectCommand sẽ Fill vào DataTable. DataTable được gán cho DataSource của Gridview. Sau đó dữ liệu được Bind lên View – Ở chiều hiệu chỉnh: Dữ liệu được người dùng xóa, sửa hay thêm trực tiếp lên Gridview. Những thay đổi này sẽ cập nhật trưc tiếp DataTable (được chỉ định thông qua DataSource). Thông qua DataAdapter, hàm update sẽ cập nhật dữ liệu từ DataTable vào Database
Script tạo Table
USE [Test] GO /****** Object: Table [dbo].[Customers] Script Date: 10/27/2017 2:38:06 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Customers]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](500) NULL, [Address] [nvarchar](500) NULL, [Note] [nvarchar](500) NULL, CONSTRAINT [PK_Customers] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
Form1.css file
using System; using System.Data; using System.Data.SqlClient; using System.Windows.Forms; namespace DataGridViewAndSQLExample { public partial class Form1 : Form { private string connectionString = “Data Source=.;Initial Catalog=Test;Integrated Security=True”; private string selectQueryString = “SELECT * FROM Customers”; private SqlConnection connection = null; private SqlDataAdapter dataAdapter = null; private DataTable dataTable = null; public Form1() { InitializeComponent(); } private void ReLoadData() { try { connection.Open(); dataTable.Clear(); dataAdapter.Fill(dataTable); dataGridView1.DataSource = dataTable; } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { connection.Close(); } } private void Form1_Load(object sender, EventArgs e) { try { connection = new SqlConnection(connectionString); connection.Open(); dataAdapter = new SqlDataAdapter(selectQueryString, connection); var sqlCommandBuilder = new SqlCommandBuilder(dataAdapter); dataTable = new DataTable(); dataAdapter.Fill(dataTable); dataGridView1.DataSource = dataTable; } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { connection.Close(); } } private void btSave_Click(object sender, EventArgs e) { try { connection.Open(); dataAdapter.Update(dataTable); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { connection.Close(); } ReLoadData(); } } }
Link dowload source tại đây