5. DataAdapter và Dataset, DataTable
- Chúng ta đã có Connect và commnand rồi, giờ chúng ta cần có một cái máy sử dụng những cái trên để thực thi lệnh mà ta đưa ra --> Đó chính là DataAdapter.
- Khai báo một DataAdapter chỉ đơn giản thế này
Ngoài ra còn các hình thức khởi tạo khác, nhưng chỉ được xài với các loại command thuộc dạng Select và tùy theo cách mà chúng ta cảm thấy quen thuộc nhất
Mã: Chọn tất cả
OleDbDataAdapter (OleDbCommand) OleDbDataAdapter (StringSelect, OleDbConnection) OleDbDataAdapter (StringSelect, StringConnect)
- Sau khi thực hiện lệnh, chúng ta sẽ có được kết quả trả về và nó được lưu trong DataTable (đại diện cho một table ) và DataSet ( đại diện cho một Table Collection).
-
Lưu ý: Muốn làm thay đổi dữ liệu nguồn (trên file) thì ta phải tác động vào các DataTable hay Dataset đồng thời cung cấp thêm các câu SQL tương ứng để thực thi sự thay đổi đó. Chúng ta sẽ nói chi tiết về vấn đề này trong phần tới.
6. Select dữ liệu
- Để cho đơn giản trong quá trình học các đối tượng sau dt và da bạn cho nó có tầm vực cục bộ trong form (nằm chung với vị trí tạo connect)
Mã: Chọn tất cả
'Tạo một đối tượng Datatable nhận dữ liệu trả về Dim dt As New DataTable("DanhsachSV") 'Tạo bộ máy DataAdapter thực hiện command Dim da As New OleDbDataAdapter()
- Để trích xuất một dữ liệu ra chúng ta dùng đoạn code sau
- Ở đây chúng ta xét trường hợp là đã có sẵn đoạn code tạo Connect ở trên rồi
Mã: Chọn tất cả
Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click 'Tạo command để lấy dữ liệu ra ngoài Dim command As New OleDbCommand() command.Connection = con ' Kết nối command.CommandType = CommandType.Text 'loại lệnh sử dụng là Text hay là một query trong access command.CommandText = "Select * From DanhsachSV"da.SelectCommand = command ‘ gán command cho da da.Fill(dt) 'Nạp dữ liệu vào Table DataGridView1.DataSource = dt 'Load dữ liệu lên DataGridview End Sub
7. Data Binding
- Đôi khi chúng ta thấy cần kết hợp DataGridview và các Textbox, để khi chúng ta click vào một hàng bất kỳ nào trên DataGridview thì dữ liệu của hàng đó sẽ hiện lên Textbox. Đó là kỹ thuật Data Binding.
- Thêm đoạn code sau vào sau đoạn code select ở trên các bạn sẽ thấy hiệu quả ngay.
Mã: Chọn tất cả
'Databinding txtSTT.DataBindings.Add("Text", dt, "STT") ‘ Ở đây ta cần binding textbox txtSTT với giá trị Text ở cột STT của Table txtName.DataBindings.Add("Text", dt, "Name") txtAdress.DataBindings.Add("Text", dt, "Address") txtPhone.DataBindings.Add("Text", dt, "Phone") txtEmail.DataBindings.Add("Text", dt, "Email")
8. Insert một Row mới vào trong Table
- Để insert một Row mới vào File data trước hết ta cần thêm một dòng mới vào DataTable hay DataSet.
Mã: Chọn tất cả
Private Sub btnInsert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsert.Click 'Tao 1 row moi theo cấu trúc row trong dt Dim row As DataRow = dt.NewRow() row("STT") = txtSTT.Text row("Name") = txtName.Text row("Address") = txtAdress.Text row("Phone") = txtPhone.Text row("Email") = txtEmail.Text dt.Rows.Add(row) ' add row mới này vào dt DataGridView1.DataSource = dt 'Tao command để update sự thay đổi trên vào file data nguồn Dim commandInsert As New OleDbCommand() commandInsert.Connection = con commandInsert.CommandType = CommandType.Text 'SQL for Insert commandInsert.CommandText = "Insert Into DanhsachSV Values (@STT,@Name,@Address,@Phone,@Email)" 'Nap tham so cho các command trên commandInsert.Parameters.Add("@STT", OleDbType.Numeric, 50, "STT") ' Nạp giá trị cho tham số @STT thông qua giá trị của cột nguồn STT commandInsert.Parameters.Add("@Name", OleDbType.VarChar, 50, "Name") commandInsert.Parameters.Add("@Address", OleDbType.VarChar, 50, "Address") commandInsert.Parameters.Add("@Phone", OleDbType.VarChar, 50, "Phone") commandInsert.Parameters.Add("@Email", OleDbType.VarChar, 50, "Email") 'Dùng da để áp đặt sự thay đổi trên vào File data nguồn da.InsertCommand = commandInsert 'gán command da.Update(dt) End Sub