1. Cập nhật CSDL ngay trên DataGridView trong VB.Net
- Một DataBase bao gồm 1 bảng NhanVien và chứa các cột sau:
+ Chèn dữ liệu tạm thời vào trong bảng:
- Form
+ Các đối tượng điều khiển: 1 datagridview và 4 button
Đối tượng điều khiển Tên biến Text
DataGridView dtgrvCapNhat
Button btLuu Lưu
Button btXoa Xóa
Button btHienThi(refresh) Hiển thị
Button btThoat Thoát
2. + Giao diện
- Code
Imports System.Data.SqlClient
Imports System.Data
Public Class CapNhat
Private kn As SqlConnection
Private dtb As DataTable
Private icn As Integer
Private dts As DataSet
Private adt As SqlDataAdapter
Private cm As SqlCommand
Private cmb As SqlCommandBuilder
Private Sub CapNhat_Load(sender As Object, e As EventArgs) _
Handles MyBase.Load
kn = New SqlConnection()
kn.ConnectionString = "Data Source=(LocalDB)v11.0;" _
& "AttachDbFilename=c:usersanhmattroidocuments" _
& "visual studio 2012ProjectsCNCSDLCNCSDLCSDLDatabase.mdf;" _
& "Integrated Security=True"
3. dts = New DataSet()
dtb = New DataTable()
cm = New SqlCommand()
cmb = New SqlCommandBuilder()
Try
kn.Open()
adt = New SqlDataAdapter("select * from NhanVien", kn)
adt.Fill(dts)
dtb = dts.Tables(0)
dtgrvCapNhat.DataSource = dtb
Catch ex As Exception
MessageBox.Show(ex.ToString(), "Error", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
kn.Dispose()
Application.Exit()
End Try
icn = 0
End Sub
Private Sub btThoat_Click(sender As Object, e As EventArgs) _
Handles btThoat.Click
Application.Exit()
End Sub
Private Sub CapNhat_FormClosing(sender As Object, e As FormClosingEventArgs) _
Handles MyBase.FormClosing
If kn.State = ConnectionState.Open Then
kn.Close()
End If
End Sub
Private Sub btLuu_Click(sender As Object, e As EventArgs) _
Handles btLuu.Click
Try
cm.CommandText = "select * from NhanVien"
cm.Connection = kn
adt.SelectCommand = cm
cmb.DataAdapter = adt
adt.Update(dtb)
Catch loi As Exception
MsgBox(loi.ToString)
End Try
End Sub
'Nếu bạn chỉ muốn lưu cột MaNV, HoTen thì ở biến cm. CommandText = "select MaNV, HoTen
from NhanVien".
'Lưu ý:
4. '+ Các cột không được chọn ở cm.CommandText phải để thuộc tính NULL lúc tạo cơ sở dữ liệu
'+ Biến DataTable mà 1 biến của DataGridView .DataSource chỏ tới ko được thay đổi dữ liệu
'trong biến này. Vì khi bạn chỉnh sửa trên DataGridView thì bảng dữ liệu
'DataGridView chỏ tới( bằng lệnh <tên biến của DataGridView>.DataSource = <biến của
DataTable>) cũng bị thay đổi theo
'=> Bạn muốn lưu cột nào chỉ cần viết tên cột vào cm.CommandText = "select <tên các cột
muốn lưu> from <từ bảng nào>"
Private Sub btXoa_Click(sender As Object, e As EventArgs) _
Handles btXoa.Click
If icn > -1 And icn < dtgrvCapNhat.RowCount - 1 Then
Try
cm.CommandText = "select * from NhanVien"
cm.Connection = kn
adt.SelectCommand = cm
cmb.DataAdapter = adt
dtgrvCapNhat.Rows.RemoveAt(icn) 'xóa 1 hàng tại chỉ số icn
If icn = dtgrvCapNhat.RowCount - 1 Then
icn = icn - 1
End If
dtgrvCapNhat.Rows(icn).Selected = True
adt.Update(dtb)
Catch loi As Exception
MsgBox(loi.ToString)
End Try
End If
End Sub
Private Sub dtgrvCapNhap_CellClick(sender As Object, _
e As DataGridViewCellEventArgs) Handles dtgrvCapNhat.CellClick
icn = e.RowIndex 'lấy chỉ số hàng khi click vào 1 hàng trên DataGridView
End Sub
Private Sub btHienThi_Click(sender As Object, e As EventArgs) _
Handles btHienThi.Click
Try
cm.CommandText = "select * from NhanVien"
cm.Connection = kn
adt.SelectCommand = cm
dtb.Clear()
adt.Fill(dts)
dtb = dts.Tables(0)
dtgrvCapNhat.DataSource = dtb
icn = 0
Catch ex As Exception