Đọc dữ liệu Access vào ListBox của VB.NET  
 

Hỏi: Em lập trình VB.NET với CSDL là Access. Xin chỉ giúp em làm cách nào để dùng câu lệnh SQL đưa từng phần bản ghi vào ListBox. Ví dụ như lúc đầu có 10 bản ghi hiển thị trong ListBox, khi click chuột thì 10 bản ghi tiếp theo sẽ được đưa vào tiếp.

Đáp: Trong VB.NET, để truy cập cơ sở dữ liệu (CSDL), bà con phải xài các lớp trong System.Data.DLL. Các lớp này được chia (căn cứ vào chức năng) thành nhiều namespace, trong đó có 2 namespace tương tự nhau là System.Data.OleDb (nối với nguồn dữ liệu OLE DB, như Microsoft Access hoặc Visual Foxro) và System.Data.SqlClient (sử dụng nguồn dữ liệu Microsoft SQL Server 7.0 hoặc cao hơn).
Như vậy để dùng CSDL Access, phải xài namespace System.Data.OleDb. Trong namespace này, các lớp bà con mình khoái xài nhất là:
OleDbConnection: nối kết đến nguồn dữ liệu OLE DB.
OleDbCommand: thực thi các câu lệnh SQL đối với cơ sở dữ liệu OLE DB.
OleDbDataReader. đọc dữ liệu được trả về từ đối tượng OleDbCommand (sau khi đã xài hai lớp trên để truy xuất nguồn dữ liệu OLE DB).
Bây giờ, bà con hãy xúm vào thử đọc nguồn dữ liệu Access, đưa vào ListBox cho... vui nhé!
Đương nhiên bà con phải mở VB.NET rồi tạo một dự án Windows Application. Căn cứ vào bảng 1 và hình 1, bà con đặt để các thuộc tính cho biểu mẫu Form1 cùng các ô điều khiển trên nó (một nút lệnh và một ô danh sách). Xong xuôi, bà con mở cửa sổ Code của biểu mẫu frmADONet để gõ các đoạn mã.

Bảng 1: Các ô điều khiển cần thiết kế

Ô điều khiển

Thuộc tính

Trị

Form

Name

frmADONet

ListBox

Name

lstEmployees

Button

Name

Button1

Text

Đọc lần nữa

Hình 1: Biểu mẫu ví dụ

Cụ thể, bà con thêm vào ngay trước và sau dòng Public Class frmADONet các dòng lệnh để thu được đoạn mã 1. Sau đó, gõ đoạn mã 2 vào thủ tục xử lý tình huống Load của biểu mẫu. Cuối cùng là đoạn mã 3, xử lý tình huống Click của nút lệnh Button1.
Đoạn mã 1:
Imports System.Data.OleDb
Public Class frmADONet
Inherits System.Windows.Forms.Form
Dim myAccessConnection As OleDbConnection
Dim dbReader As OleDbDataReader
Dim dbCmd As OleDbCommand = New _
OleDbCommand("SELECT Employees.FirstName,Employees.LastName FROM Employees")
Dim nSoBanGhi As Integer = 2
Dim I As Integer, lDayDuRoi As Boolean
Đoạn mã 2:
Private Sub frmADONet_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
Try
myAccessConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB")
myAccessConnection.Open()
dbCmd.Connection = myAccessConnection
dbReader = dbCmd.ExecuteReader(CommandBehavior.SingleResult)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Đoạn mã 3:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
lDayDuRoi = False
I = 0
Do While (dbReader.Read())
lstEmployees.Items.Add(dbReader.GetString(0) & " " & dbReader.GetString(1))
I = I + 1
If (I >= nSoBanGhi) Then
lDayDuRoi = True
Exit Do
End If
Loop
If Not lDayDuRoi Then
MsgBox("Đã hết thông tin cần đọc rồi !")
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Ví dụ của ta "chôm" CSDL có sẵn của Access (hoặc Visual Basic) mang tên Northwind.MDB (có thể mang tên khác là NWIND.MDB). Nội dung dữ liệu gồm hai cột FirstNameLastName của bảng Employees.
Thủ tục xử lý tình huống Load của biểu mẫu mần công việc xử lý lệnh SQL để mang kết quả truy vấn (query) về cho đối tượng OleDbDataReader có tên dbReader, sẵn sàng để mỗi khi bà con “bộp” vào nút Button1 thì chỉ cần moi dữ liệu từ đây, nhét vào ô danh sách.
Tui sử dụng biến nSoBanGhi để xác định mỗi lần đọc tối đa là bao nhiêu bản ghi (ví dụ này là 2). Biến lDayDuRoi để xác định xem còn bản ghi nào trong dbReader nữa không.
Chương Can Chíp
(Theo Echip)

 
 

 
     
 
Công nghệ khác:


BẢO MẬT MÁY TÍNH BẰNG VISUAL BASICWGA của Microsoft bị hacker qua mặt
Sử dụng Regular Expression - kiểm tra tính hợp lệ của e-mail với PHPAsp2php Tool
  Xem tiếp    
 
Lịch khai giảng của hệ thống
 
Ngày
Giờ
T.Tâm
TP Hồ Chí Minh
Hà Nội
 
   
New ADSE - Nhấn vào để xem chi tiết
Mừng Sinh Nhật Lần Thứ 20 FPT-APTECH
Nhấn vào để xem chi tiết
Bảng Vàng Thành Tích Sinh Viên FPT APTECH - Nhấn vào để xem chi tiết
Cập nhật công nghệ miễn phí cho tất cả cựu sinh viên APTECH toàn quốc
Tiết Thực Vì Cộng Đồng
Hội Thảo CNTT
Những khoảnh khắc không phai của Thầy Trò FPT-APTECH Ngày 20-11