Xây dựng lớp xử lý lưu trữ

Một phần của tài liệu hướng dẫn sử dụng visual basic (Trang 134 - 140)

Đây là lớp làm việc trực tiếp với nguồn dữ liệu. Với vai trị đọc dữ liệu về cho ứng dụng cũng như cập nhật các thay đổi từ phía người dùng vào nguồn dữ liệu, lớp sẽ cĩ các thuộc tính, chức năng hổ trợ cho các vai trị này. Khi tạo lớp, cần thực hiện:

– Phân chia các Region để tiện việc quản lý các thuộc tính, sự kiện và phương thức

– Truy xuất dữ liệu của bảng được thực hiện thơng qua DefaultView của DataTable

Người

Xử lý thể hiện

Xử lý nghiệp vụ

Dữ liệu Xử lý lưu trữ

II.1. Các khai báo

Đây là nhĩm khai báo các biến thành viên, hằng cần sử dụng bên trong lớp và thường được khai báo với từ khĩa Private:

– Khai báo đối tượng truy xuất cập nhật dữ liệu(DataAdapter): đối tượng này đĩng vai trị đọc ghi dữ

liệu cho lớp xử lý lưu trữ

– Biến chuỗi chứa nội dung truy vấn dữ liệu

– Biến chuỗi chứa tên bảng muốn truy vấn dữ liệu

– Biến đối tượng dùng chung kết nối đến nguồn dữ liệu.

Ví dụ:

Imports System.Data

Imports System.Data.OleDb Module PHAN_MEM

Public Const Chuoi_lien_ket As String = _

"Provider=Microsoft.JET.OLEDB.4.0;" End Module

Public Class XL_BANG Inherits DataTable #Region "Khai báo cục bộ "

' Khai báo đối tượng đọc ghi dữ liệu trên CSDL Private WithEvents mBo_doc_ghi As OleDbDataAdapter ' Khai báo biến chuỗi chứa nội dung truy vấn dữ liệu Private mChuoi_SQL As String

' Khai báo biến chuỗi chứa tên bảng muốn truy vấn dữ liệu Private mTen_bang As String

' Khai báo biến đối tượng dùng chung kết nối đến nguồn dữ liệu Private Shared mKet_noi As OleDbConnection

#End Region . . .

End Class

II.2. Khai báo các thuc tính

Đây là phần khai báo các thuộc tính của lớp xử lý lưu trữ cho phép truy xuất từ bên ngồi lớp thường

được khai báo với từ khĩa Public:

Ví dụ: XL_BANG: phần khai báo các thuộc tính #Region " Khai báo các thuộc tính "

Public Shared Chuoi_CSDL As String

' Thuộc tính cho phép đọc và ghi nội dung truy vấn dữ liệu cần thực hiện cho thể hiện (adsbygoogle = window.adsbygoogle || []).push({});

Public Property Chuoi_SQL() As String Get

Return mChuoi_SQL End Get

Set(ByVal Value As String) mChuoi_SQL = Value End Set

End Property

' Thuộc tính cho phép truy xuất và gán tên bảng muốn truy vấn dữ liệu Public Property Ten_bang() As String

Get

Return mTen_bang End Get

Set(ByVal Value As String) mTen_bang = Value

End Set End Property

' Thuộc tính chứa đối tượng kết nối đến nguồn dữ liệu Public Shared Property Ket_noi() As OleDbConnection Get

Return mKet_noi End Get

Set(ByVal Value As OleDbConnection) mKet_noi = Value

End Set End Property

' Thuộc tính chỉ đọc cho biết số dịng trên DefaultView của DataTable Public ReadOnly Property So_dong() As Long

Get

Return Me.DefaultView.Count End Get

End Property #End Region

II.3. Khai báo phương thc khi to

Nhĩm gồm những hàm khởi tạo đối tượng chứa dữ liệu, đồng thời khởi tạo các đối tượng thực hiện đọc ghi dữ liệu:

Ví dụ: XL_BANG: phần khai báo các hàm khỏi tạo #Region " Khai báo phương thức khởi tạo "

' Thủ tục khởi tạo một thể hiện DataTable chưa cĩ cấu trúc và dữ liệu Public Sub New()

MyBase.New() End Sub

' Thủ tục khởi tạo đọc tồn bộ bảng

Public Sub New(ByVal pTen_bang As String) MyBase.New(pTen_bang)

mTen_bang = pTen_bang Doc_bang()

End Sub

' Thủ tục khởi tạo đọc bảng theo nội dung yêu cầu

Public Sub New(ByVal pTen_bang As String, ByVal pChuoi_SQL As String) MyBase.New(pTen_bang) mTen_bang = pTen_bang mChuoi_SQL = pChuoi_SQL Doc_bang() End Sub #End Region

II.4. Khai báo phương thc x lý - cung cp thơng tin

Nhĩm gồm những chức năng xử lý và cung cấp thơng tin: (adsbygoogle = window.adsbygoogle || []).push({});

Ví dụ: XL_BANG: phần khai báo các phương thức xử lý – cung cấp thơng tin #Region " Khai báo phương thức xử lý – cung cấp thơng tin "

' Thủ tục khởi tạo đối tượng đọc ghi dữ liệu và khai báo thơng tin cho đối tượpng kết nối

' Thực hiện lấy cấu trúc và dữ liệu vào DataTable. Sau cùng phát sinh các lệnh cập nhật

Private Sub Doc_bang()

If mChuoi_SQL = "" Then mChuoi_SQL = "SELECT * FROM " & mTen_bang If mKet_noi Is Nothing Then

mKet_noi = New OleDbConnection

mKet_noi.ConnectionString = Chuoi_lien_ket & "Data Source=" & Chuoi_CSDL

End If Try

mBo_doc_ghi = New OleDbDataAdapter(mChuoi_SQL, mKet_noi) mBo_doc_ghi.Fill(Me)

mBo_doc_ghi.FillSchema(Me, SchemaType.Mapped)

mBo_doc_ghi.SelectCommand.CommandText = "Select * FROM " & mTen_bang

Dim Bo_phat_sinh As New OleDbCommandBuilder(mBo_doc_ghi) Catch ex As OleDbException

End Try End Sub

' Hàm cập nhật các thay đổi trên DataTable vào CSDL và cập nhật các dịng trên DataTable

' về trạng thái khơng thay đổi. Nếu cập nhật được, hàm trả về True; ngược lại, bỏ qua các

' thay đổi và trả về False

Public Function Ghi() As Boolean Dim ketqua As Boolean = True Try mBo_doc_ghi.Update(Me) Me.AcceptChanges() Catch e As Exception Me.RejectChanges() ketqua = False End Try Return ketqua End Function

' Thủ tục lọc dữ liệu của DefaultView theo điều kiện lọc truyền vào Public Sub Loc_du_lieu(ByVal pDieu_kien As String)

Try Me.DefaultView.RowFilter = pDieu_kien Catch ex As Exception End Try End Sub #End Region

II.5. Khai báo các phương thc thc hin lnh

Nhĩm gồm những hàm, thủ tục cung cập chức năng thực hiện lệnh:

Ví dụ: XL_BANG: Khai báo các phương thức thực hiện lệnh

#Region " Khai báo các phương thức thực hiện lệnh "

' Hàm thực hiện nội dung lệnh truyền vào và trả về số mẩu tin được cập nhật, nếu thành

' cơng. Nếu khơng thành cơng, hàm trả về -1

Public Function Thuc_hien_lenh(ByVal Lenh As String) As Integer Try

Dim Cau_lenh As New OleDbCommand(Lenh, mKet_noi) mKet_noi.Open()

Dim ket_qua As Integer = Cau_lenh.ExecuteNonQuery() mKet_noi.Close() Return ket_qua Catch ex As OleDbException Return -1 End Try End Function

' Hàm thực hiện nội dung lệnh tính tốn thống kê truyền vào và trả về kết quả, nếu thành

' cơng. Nếu khơng thành cơng, hàm trả về Nothing (adsbygoogle = window.adsbygoogle || []).push({});

Public Function Thuc_hien_lenh_tinh_toan(ByVal Lenh As String) As Object Try

Dim Cau_lenh As New OleDbCommand(Lenh, mKet_noi) mKet_noi.Open()

Dim ket_qua As Object = Cau_lenh.ExecuteScalar mKet_noi.Close() Return ket_qua Catch ex As OleDbException Return Nothing End Try End Function #End Region

II.6. Nhĩm x lý s kin

Ví dụ: XL_BANG: Xử lý sự kiện #Region " Xử lý sự kiện "

' Khi khĩa chính là cột tự động tăng, giá trị cột này được CSDL tự ' phát sinh nên cần truy xuất về để sử dụng cho việc cập nhật sau đĩ. Private Sub mBo_doc_ghi_RowUpdated(ByVal sender As Object, ByVal e As _

System.Data.OleDb.OleDbRowUpdatedEventArgs) _

Handles mBo_doc_ghi.RowUpdated

If e.Status = UpdateStatus.Continue AndAlso _

e.StatementType = StatementType.Insert Then

'Lấy gía trị AutoNumber

If Me.PrimaryKey(0).AutoIncrement Then

Dim lenh As New OleDbCommand("Select @@IDENTITY", mKet_noi) e.Row.Item(0) = lenh.ExecuteScalar() e.Row.AcceptChanges() End If End If End Sub #End Region

Một phần của tài liệu hướng dẫn sử dụng visual basic (Trang 134 - 140)