1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Bài 5: XÂY DỰNG LỚP XỬ LÝ DỮ LIỆU pptx

11 515 6
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây dựng lớp xử lý dữ liệu
Thể loại Bài giảng
Định dạng
Số trang 11
Dung lượng 287 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chính vì lý do đó, trong phần này, chúng tôi hướng dẫn các bạn xây dựng lớp xử lý và đối tượng thể hiện dữ liệu.. Imports System.Data.OleDb Public Class XL_ Inherits DataTable #Region

Trang 1

Bài 5 XÂY DỰNG LỚP XỬ LÝ DỮ LIỆU

1 Giới thiệu

Khi đọc đến phần này, chắc hẳn các bạn cũng đã thực hiện khá nhiều trang web: trang danh sách khách hàng, trang thông tin sách, … Giờ đây, chúng ta tạm dừng lại, nhìn lại những kết quả mình đã làm Bạn có thấy là ứng với mỗi trang web, chúng ta đều phải tạo chuỗi kết nối, thực hiện đọc bảng dữ liệu, viết xử lý liên kết dữ liệu…

Chỉ mỗi việc hiển thị dữ liệu trên trang Web, chúng ta đã viết khá nhiều dòng lệnh trên đó, chưa kể đến những xử lý khác sau này Số lượng thao tác cần xử lý trên trang Web càng tăng, số lượng dòng lệnh càng nhiều Việc để lẫn lộn những đoạn code về truy cập dữ liệu và xử lý trên giao diện gây không ít khó khăn trong việc xây dựng, phát triển và bảo trì ứng dụng web

Chính vì lý do đó, trong phần này, chúng tôi hướng dẫn các bạn xây dựng lớp xử lý và đối tượng thể hiện

dữ liệu Lớp xử lý đảm nhận trách nhiệm thực hiện các thao tác truy xuất và cập nhật dữ liệu Đối tượng thể hiện nhận dữ liệu, hiển thị dữ liệu trên trang Web và tiếp nhận thông tin từ người dùng Việc phân chia công việc cụ thể cho từng đối tượng không những giúp cho chúng ta xây dựng và phát triển ứng dụng một cách có hiệu quả mà còn dễ dàng trong quá trình bảo trì, phù hợp với xu hướng phát triển phần mềm sử dụng các ngôn ngữ lập trình hiện đại

2 Thiết kế tổng quan

Để giúp các bạn dễ dàng theo dõi cấu trúc chi tiết của lớp xử lý dữ liệu, chúng ta sẽ bắt đầu tìm hiểu thiết

kế tổng quan của các lớp xử lý dữ liệu

Imports System.Data.OleDb

Public Class XL_<TÊN_LỚP_DỮ_LIỆU>

Inherits DataTable

#Region "Khai báo biến thành viên"

#End Region

#Region "Danh sách các thuộc tính"

#End Region

#Region "Nhóm hàm khởi tạo đối tượng"

#End Region

#Region "Nhóm hàm cung cấp thông tin"

#End Region

#Region "Nhóm hàm xử lý tính toán"

#End Region

End Class

Nhóm từ khóa #Region và #End Region tạo ra các phân vùng giúp chúng ta dễ dàng quản lý các đoạn lệnh trong quá trình xây dựng lớp

Trang 2

Phân vùng với Region

Như các bạn thấy, lớp XL_XXX (XXX: đại diện cho tên lớp xử lý) được kế thừa từ lớp DataTable, đồng nghĩa

với việc nó sẽ được thừa hưởng tất cả những "tài sản" (các thuộc tính, phương thức, …) từ lớp DataTable Trong lớp xử lý trên, chúng ta có thực hiện các thao tác truy xuất và cập nhật dữ liệu, do đó, chúng ta cần sử

dụng bộ thư viện của ADO.Net Bộ thư viện được sử dụng trong lớp xử lý này là System.Data.OleDb Lẽ

đương nhiên, khi xây dựng ứng dụng của riêng mình, tùy theo yêu cầu cụ thể của ứng dụng, các bạn hoàn toàn

có thể chọn cho mình bộ thư viện khác, như System.Data.SqlClient chẳng hạn.

Chúng tôi chia các khai báo, xử lý thành 5 nhóm:

Khai báo biến thành viên: Khai báo các biến thành viên của lớp đối tượng trong nhóm này.

+Danh sách các thuộc tính: Để đảm bảo tính bao bọc của phương pháp lập trình hướng đối tượng, chúng ta

sử dụng các thuộc tính để thực hiện giao tiếp giữa biến thành viên với các xử lý bên ngoài lớp

+Nhóm hàm khởi tạo đối tượng: Danh sách các hàm khởi tạo lớp đối tượng được thực hiện trong nhóm

này

+Nhóm hàm cung cấp thông tin: Các hàm cung cấp thông tin có được từ lớp đối tượng.

+Nhóm hàm xử lý tính toán: Các hàm, thủ tục, thực hiện các xử lý, tính toán theo yêu cầu phục vụ cho việc

cung cấp thông tin, vận hành lớp đối tượng

3 Cấu trúc chi tiết

Khai báo biến thành viên

Chúng tôi xây dựng lớp XL_SACH làm ví dụ minh họa mẫu

#Region "Khai báo biến thành viên"

Protected mDa_Bo_doc_ghi As New OleDbDataAdapter

Protected mChuoi_du_lieu As String = "SELECT * From SACH"

Protected Const mTen_bang = "SACH"

Protected mKhoa As String = "Ms"

Protected mDieu_kien_loc As String

#End Region

Nhóm hàm cung cấp thông tin

#Region "Nhóm hàm cung cấp thông tin"

'Cho biết số dòng dữ liệu hiện có

Public Function So_dong() As Integer

Return Me.Rows.Count

End Function

'Cung cấp thuộc tính của đối tượng có mã số

Function Thuoc_tinh(ByVal pMa_so As Integer, _

ByVal pTen_cot As String)

Dim lDv As New DataView(Me)

lDv.RowFilter = Khoa & "=" & pMa_so

If lDv.Count > 0 Then

Return lDv(0)(pTen_cot)

End If

End Function

Trang 3

Function Sap_xep(ByVal pChuoi_sap_xep As String) As DataView

Dim lDv As New DataView(Me)

lDv.Sort = pChuoi_sap_xep

Return lDv

End Function

#End Region

Nhóm hàm xử lý tính toán

#Region "Nhóm hàm xử lý tính toán"

'Đọc n cuốn sách mới được nhập

Function Doc_sach_moi(Optional ByVal pSo_dong As _

Integer = 10) As XL_SACH

Dim lSql As String

lSql = "Select Top " & pSo_dong & " * " & _

" From SACH " & _

" Order By Ngay_cap_nhat Desc"

Return New XL_SACH(lSql)

End Function

-

Function Doc_sach_ban_chay(Optional ByVal pSo_dong _

As Integer = 10) As XL_SACH

Dim lSql As String

lSql = "Select Top " & pSo_dong & " * " & _

" From SACH " & _

" Order By So_luong_ban Desc"

Return New XL_SACH(lSql)

End Function

-Function Doc_sach_theo_chu_de(ByVal pMcd As Integer, _

Optional ByVal pSo_dong As Integer = 10) As XL_SACH

Dim lSql As String

lSql = "Select Top " & pSo_dong & " * " &_

" From SACH" & _

" Where Mcd = " & pMcd & _

" Order By Ngay_cap_nhat Desc"

Return New XL_SACH(lSql)

End Function

Trang 4

Sub Doc_du_lieu(Optional ByVal pSQL As String = "")

Dim lSQL As String = Chuoi_du_lieu

If pSQL <> "" Then

lSQL = pSQL

End If

If Dieu_kien_loc <> "" Then

lSQL &= " Where " & Dieu_kien_loc

End If

mDa_Bo_doc_ghi = New OleDbDataAdapter(lSQL, gChuoi_ket_noi)

Dim cb As New OleDbCommandBuilder(mDa_Bo_doc_ghi)

mDa_Bo_doc_ghi.Fill(Me)

End Sub

Chú ý: Biến gChuoi_ket_noi được khai báo trong thư viện

'Module Thu_vien.vb

Module Thu_Vien

Public gChuoi_ket_noi As String

End Module

Cần phải khởi tạo giá trị cho biến gChuoi_ket_noi trước khi khởi tạo đối tượng.

Public Sub Them_sach(ByVal pTen_sach As String, _

ByVal pDon_gia As String, _

ByVal pMo_ta As String, _

ByVal pHinh_minh_hoa As String, _

ByVal pMcd As Integer, _

ByVal pMnxb As Integer)

Dim lDr As DataRow = Me.NewRow

lDr("Ten_sach") = pTen_sach

lDr("Don_gia") = pDon_gia

lDr("Mo_ta") = pMo_ta

lDr("Hinh_minh_hoa") = pHinh_minh_hoa

lDr("Mcd") = pMcd

lDr("Mnxb") = pMnxb

Me.Rows.Add(lDr)

mDa_Bo_doc_ghi.Update(Me)

Me.AcceptChanges()

End Sub

Trang 5

-Sub Xoa_sach(ByVal pMa_so As Integer)

Dim lCn As New OleDbConnection(gChuoi_ket_noi)

Dim lCmd As New OleDbCommand

lCmd.Connection = lCn

lCmd.CommandType = CommandType.Text

lCmd.CommandText = "Delete * From " & Ten_Bang & _

" Where " & Khoa & "=" & pMa_so

lCn.Open()

lCmd.ExecuteNonQuery()

lCn.Close()

End Sub

#End Region

Danh sách các thuộc tính

Ứng với mỗi biến thành viên cần giao tiếp ra bên ngoài, chúng ta cung cấp thuộc tính tương ứng để làm việc

#Region "Danh sách các thuộc tính"

Private ReadOnly Property Chuoi_du_lieu() As String

Get

Return mChuoi_du_lieu

End Get

End Property

Public ReadOnly Property Ten_Bang() As String

Get

Return mTen_bang

End Get

End Property

Public ReadOnly Property Khoa() As String

Get

Return mKhoa

End Get

End Property

Private Property Dieu_kien_loc() As String

Get

Return mDieu_kien_loc

End Get

Set(ByVal Value As String)

mDieu_kien_loc = Value

End Set

End Property

#End Region

Trang 6

Mô hình xử lý của ứng dụng

Nhóm hàm khởi tạo đối tượng

#Region "Nhóm hàm khởi tạo đối tượng"

'Tạo đối tượng chứa tất cả dữ liệu có trong bảng

Public Sub New()

MyBase.New(mTen_bang)

Doc_du_lieu()

End Sub

'Tạo đối tượng có mã số tương ứng

Public Sub New(ByVal pMa_so As Integer)

MyBase.New(mTen_bang)

Dieu_kien_loc = Khoa & "=" & pMa_so

Doc_du_lieu()

End Sub

'Tạo đối tượng có dữ liệu thỏa câu lệnh truy vấn

Trang 7

Public Sub New(ByVal pLenh_sql As String)

MyBase.New(mTen_bang)

Doc_du_lieu(pLenh_sql)

End Sub

#End Region

Các bạn xem hàm Doc_du_lieu trong nhóm hàm xử lý tính toán

Nhóm hàm cung cấp thông tin

#Region "Nhóm hàm cung cấp thông tin"

'Cho biết số dòng dữ liệu hiện có

Public Function So_dong() As Integer

Return Me.Rows.Count

End Function

-'Cung cấp thuộc tính của đối tượng có mã số

Function Thuoc_tinh(ByVal pMa_so As Integer, _

ByVal pTen_cot As String)

Dim lDv As New DataView(Me)

lDv.RowFilter = Khoa & "=" & pMa_so

If lDv.Count > 0 Then

Return lDv(0)(pTen_cot)

End If

End Function

Function Sap_xep(ByVal pChuoi_sap_xep As String) As DataView

Dim lDv As New DataView(Me)

lDv.Sort = pChuoi_sap_xep

Return lDv

End Function

#End Region

Nhóm hàm xử lý tính toán

#Region "Nhóm hàm xử lý tính toán"

'Đọc n cuốn sách mới được nhập

Function Doc_sach_moi(Optional ByVal pSo_dong As _

Integer = 10) As XL_SACH

Dim lSql As String

lSql = "Select Top " & pSo_dong & " * " & _

" From SACH " & _

" Order By Ngay_cap_nhat Desc"

Return New XL_SACH(lSql)

End Function

Trang 8

Function Doc_sach_ban_chay(Optional ByVal pSo_dong _

As Integer = 10) As XL_SACH

Dim lSql As String

lSql = "Select Top " & pSo_dong & " * " & _

" From SACH " & _

" Order By So_luong_ban Desc"

Return New XL_SACH(lSql)

End Function

Function Doc_sach_theo_chu_de(ByVal pMcd As Integer, _

Optional ByVal pSo_dong As Integer = 10) As XL_SACH

Dim lSql As String

lSql = "Select Top " & pSo_dong & " * " &_

" From SACH" & _

" Where Mcd = " & pMcd & _

" Order By Ngay_cap_nhat Desc"

Return New XL_SACH(lSql)

End Function

Sub Doc_du_lieu(Optional ByVal pSQL As String = "")

Dim lSQL As String = Chuoi_du_lieu

If pSQL <> "" Then

lSQL = pSQL

End If

If Dieu_kien_loc <> "" Then

lSQL &= " Where " & Dieu_kien_loc

End If

mDa_Bo_doc_ghi = New OleDbDataAdapter(lSQL, gChuoi_ket_noi)

Dim cb As New OleDbCommandBuilder(mDa_Bo_doc_ghi)

mDa_Bo_doc_ghi.Fill(Me)

End Sub

#End Region

Chú ý: Biến gChuoi_ket_noi được khai báo trong thư viện

'Module Thu_vien.vb

Module Thu_Vien

Public gChuoi_ket_noi As String

End Module

Cần phải khởi tạo giá trị cho biến gChuoi_ket_noi trước khi khởi tạo đối tượng.

Public Sub Them_sach(ByVal pTen_sach As String, _

Trang 9

ByVal pDon_gia As String, _

ByVal pMo_ta As String, _

ByVal pHinh_minh_hoa As String, _

ByVal pMcd As Integer, _

ByVal pMnxb As Integer)

Dim lDr As DataRow = Me.NewRow

lDr("Ten_sach") = pTen_sach

lDr("Don_gia") = pDon_gia

lDr("Mo_ta") = pMo_ta

lDr("Hinh_minh_hoa") = pHinh_minh_hoa

lDr("Mcd") = pMcd

lDr("Mnxb") = pMnxb

Me.Rows.Add(lDr)

mDa_Bo_doc_ghi.Update(Me)

Me.AcceptChanges()

End Sub

-Sub Xoa_sach(ByVal pMa_so As Integer)

Dim lCn As New OleDbConnection(gChuoi_ket_noi)

Dim lCmd As New OleDbCommand

lCmd.Connection = lCn

lCmd.CommandType = CommandType.Text

lCmd.CommandText = "Delete * From " & Ten_Bang & _

" Where " & Khoa & "=" & pMa_so

lCn.Open()

lCmd.ExecuteNonQuery()

lCn.Close()

End Sub

4 Sử dụng lớp đối tượng

Sau khi thiết kế lớp xử lý hoàn tất, việc hiển thị dữ liệu trên màn hình bây giờ khá đơn giản Xử lý sau liệt

kê các sách có trong bảng dữ liệu:

Private Sub Page_Load(…, e …) Handles MyBase.Load

If Not IsPostBack Then

'Khởi tạo chuỗi kết nối

gChuoi_ket_noi ="Provider=" & _

"Microsoft.Jet.Oledb.4.0;Data Source=" & _

Server.MapPath(" \Data\QlBanSach.mdb")

Dim lSach As New XL_SACH

Trang 10

dtlSach.DataSource = lSach

dtlSach.DataKeyField = "Ms"

dtlSach.DataBind()

End If

End Sub

Nếu muốn hiển thị các sách mới nhập:

Private Sub Page_Load(…, e …) Handles MyBase.Load

If Not IsPostBack Then

'Khởi tạo chuỗi kết nối

gChuoi_ket_noi ="Provider=" & _

"Microsoft.Jet.Oledb.4.0;Data Source=" & _ Server.MapPath(" \Data\QlBanSach.mdb")

Dim lSach As New XL_SACH

dtlSach.DataSource = lSach.Doc_sach_moi()

dtlSach.DataKeyField = "Ms"

dtlSach.DataBind()

End If

End Sub

Kết quả hiển thị:

Màn hình thông tin sách

Trang 11

Trong bảng SACH, chúng ta chỉ có thông tin về Mã chủ đề (Mcd), Mã nhà xuất bản (Mnxb), để lấy được tên chủ đề, tên nhà xuất bản như kết quả trong hình minh họa trên, chúng ta cần xây dựng hai lớp xử lý tương ứng là XL_CHU_DE, XL_NHA_XB và bổ sung các điều khiển cần thiết như hình bên dưới

Bổ sung vào sự kiện ItemDataBound của dltSach:

'Hiển thị thông tin chủ đề

Dim lnkChu_de As LinkButton

lnkChu_de = e.Item.FindControl("lnkChu_de")

Dim lChu_de as New XL_CHU_DE

lnkChu_de.Text = lChu_de.Thuoc_tinh( _

e.Item.DataItem("Mcd"),"Ten_chu_de")

'Hiển thị thông tin nhà xuất bản

Dim lnkNha_xb As LinkButton

lnkNha_xb = e.Item.FindControl("lnkNha_xb")

Dim lNha_xb as New XL_NHA_XB

lnkNha_xb.Text = lNha_xb.Thuoc_tinh( _

e.Item.DataItem("Mnxb"), "Ten_nha_xuat_ban")

Ngày đăng: 25/01/2014, 19:20

HÌNH ẢNH LIÊN QUAN

Mô hình xử lý của ứng dụng - Tài liệu Bài 5: XÂY DỰNG LỚP XỬ LÝ DỮ LIỆU pptx
h ình xử lý của ứng dụng (Trang 6)
Màn hình thông tin sách - Tài liệu Bài 5: XÂY DỰNG LỚP XỬ LÝ DỮ LIỆU pptx
n hình thông tin sách (Trang 10)
Trong bảng SACH, chúng ta chỉ có thông tin về Mã chủ đề (Mcd), Mã nhà xuất bản (Mnxb), để lấy được tên chủ đề, tên nhà xuất bản như kết quả trong hình minh họa trên, chúng ta cần xây dựng hai lớp xử lý tương ứng là XL_CHU_DE, XL_NHA_XB và bổ sung các điều - Tài liệu Bài 5: XÂY DỰNG LỚP XỬ LÝ DỮ LIỆU pptx
rong bảng SACH, chúng ta chỉ có thông tin về Mã chủ đề (Mcd), Mã nhà xuất bản (Mnxb), để lấy được tên chủ đề, tên nhà xuất bản như kết quả trong hình minh họa trên, chúng ta cần xây dựng hai lớp xử lý tương ứng là XL_CHU_DE, XL_NHA_XB và bổ sung các điều (Trang 11)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w