Content Component: Content Component: là các đối tượng đại diện cho dữ liệu cần ¾ DataSet: là hình ảnh của CSDL trong bộ nhớ, nó chứa các bảng dữ liệu trong các DataTable và các mối q
Trang 1Các công nghệ truy cập dữ liệu của Microsoft như
DAO (Data Access Object), ODBC (Open DataBase
Connectivity
(ActiveX Data Objects)
Tuy nhiên từ khi NET Framework ra đời thì công
nghệ ADO.NET đã được tích hợp, ADO.NET:
¾Chứa các lớp cho phép các ứng dụng connect data
sources
¾Execute commands
¾Manage disconnected data (quản lý dữ liệu đã ngắt
kết nối).
Trang 2Windows Form programming with VB.Net 2005.
Giới thiệu (tt):
Với ADO.NET người lập trình có thể viết ít
mã lệnh thao tác cơ sở dữ liệu hơn so với các
công nghệ trước trong các ứng dụng client-server
hoặc các ứng dụng trên desktop.
Mặt khác, trong ASP.NET từ phiên bản NET
Framework 2.0 trở lên có thêm các thao tác với cơ
sở dữ liệu mà không sử dụng ADO.NET như
SqlDataSource, LINQ hoặc Profiles.
Buổi 6: VB.NET & Database (CSDL)
Mục tiêu của bài: Sử dụng được các lớp trong
thư viện ADO.NET tương tác với CSDL:
¾Mô tả cách thức kết nối và giao tiếp với CSDL
¾Mô tả được chức năng và cách thức sử dụng các
lớp DataSet, Datatable, Datarow, DataColumn để
đọc dữ liệu.
¾Đọc dữ liệu với DataReader và hiển thị trên các
lớp kế thừa từ ComboBox, Listbox, TextBox
¾Cập nhật dữ liệu với Dataset và DataAdapter
Trang 3¾Managed Provider Component: bao gồm các đối
tượng như: DataAdapter, DataReader, Connection,
Command giữ nhiệm vụ làm việc trực tiếp với dữ
liệu như database, file,…
¾Content Component: bao gồm các đối tượng như
DataSet, DataTable, DataView, DataRow,
DataColumn, DataRelation …đại diện cho dữ liệu
thực sự cần làm việc.
Trang 4Windows Form programming with VB.Net 2005.
Content Component:
Content Component:
là các đối tượng đại
diện cho dữ liệu cần
¾ DataSet: là hình ảnh của CSDL trong bộ nhớ, nó
chứa các bảng dữ liệu trong các DataTable và các
mối quan hệ trong Datarelation
¾ DataTable: giống như bảng dữ ữ liệu, dùng chứa dữ
liệu trên ứng dụng
¾ Dataview: là “Hình ảnh” của DataTable, một
DataTable có thể có nhiều Dataview, thông qua
Dataviewt có thể sắp xếp dữ liệu, lọc dữ liệu trong
DataTable
¾ DataColumn: chứa các cột trong DataTable
Trang 5* Unique Constraint or Primary Key Constraint:
đảm bảo tính duy nhất về giá trị của một cột trong table
* Foreign Key Constraint: ràng buộc khóa ngoại
10
Windows Form programming with VB.Net 2005.
Microsoft cung cấp hai bộ Provider component trong
phiên bản ADO.NET là OLEDB và SQL Server
¾OLEDB managed provider: dùng thao tác với các loại
CSDL (Access, Excel, Oracle, IBM…), bao gồm các đối
¾OLEDB: Namespace Imports System.Data.OLEDB
Managed Provider Component
Trang 6Windows Form programming with VB.Net 2005.
SQL Server managed provider: dùng thao tác với
CSDL SQL Server, bao gồm các đối tượng:
Để sử dụng Provider nào ta phải viết lệnh Imports
(khai báo Namespace) trên đầu đối mỗi class
¾SQL Server: Imports System.Data.SQLClient
Managed Provider Component (tt)
Oracle managed provider: dùng thao tác với CSDL
SQL Server, bao gồm các đối tượng:
¾Ocracle: Imports Oracle.DataAccess.Client
Managed Provider Component (tt)
Trang 7Windows Form programming with VB.Net 2005.
¾Connection: liên kết với CSDL, các đối tượng khác
phải thông qua đối tượng Connection để thao tác với
¾DataReader: chứa dữ liệu lấy từ CSDL, chỉ đọc, chỉ
duyệt từ trên xuống
¾DataAdapter: là đối tượng trung gian giữa CSDL và
DataSet, thông qua đối tượng này ta có thể lấy dữ
liệu từ CSDL đưa lên Dataset và cập nhật dữ liệu từ
DataSet xuống CSDL
Managed Provider Component (tt)
14
Windows Form programming with VB.Net 2005.
SQl Server, Ocrale) các Managed Provider
Component phải được dùng hợp lý:
Trang 8Windows Form programming with VB.Net 2005.
Dùng tạo kết nối giữa ứng dụng và CSDL
Các thuộc tính (Properties) của OLEDBConnection
¾ConnectionString: chuỗi liên kết CSDL, liên kết
với Access với Cú pháp sau :
“Provider=Microsoft.jet.oledb.4.0;Data Source=
Đườngdẫn\tênCSDL”
¾State: chỉ ra trạng thái của đối tượng kết nối
(Connection Object) hiện tại như: Closed, Open,
Broken…)
OleDbConnection Object ()
Một số Phương thức thường dùng của Connection
¾Open: mở kết nối đến CSDL cùng với các thông
tin đã được chúng ta khai báo trong
ConnectionString
¾Close: Đóng kết nối với nguồn dữ liệu Sử dụng
phương thức này để đóng Connection đang mở.
¾Dispose: Xoá mọi tài nguyên liên quan đến
Connection trên vùng nhớ
OleDbConnection Object (tt)
Trang 9Windows Form programming with VB.Net 2005.
¾Khai báo OleDbConnection dùng MS Access:
‘Imports provider ở đầu màn hình Code
Imports SysTem.Data
Imports SysTem.Data.OleDb
‘ Khai báo và khởi tạo OLEDbConnection
Dim strConnection As String = _
"Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source =" & “<đườngdẫn\Tên CSDL>”
Dim cn as New OleDbConnection(strConnection)
Windows Form programming with VB.Net 2005.
¾Nếu lưu CSDL trong cùng thư mục file chạy chương trình
ta có thể dùng thuộc tính Application.StartupPath sau:
Dim cn as new OleDbConnection
Dim strConnection as string = _
"Provider=microsoft.jet.oledb.4.0;data source=" & _
Application.StartupPath & “\TenCSDL.mdb“
Trang 10Windows Form programming with VB.Net 2005.
Imports System.Data
Imports System.Data.OleDb
Public Class clsDataLayer
Private strConnection As String
Private cn As New OleDbConnection
Public Sub New()
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
& Application.StartupPath & "\QLHoaDon.mdb"
cn.ConnectionString = strConnection
End Sub ‘ Kết thúc Sub khởi tạo class clsDataLayer
Public Sub GetConnection()
Dim ConnectionState As ConnectionState
Try
ConnectionState = cn.State
If cn.State = Data.ConnectionState.Closed Then
cn.Open() End If
Là đối tượng được dùng để các truy vấn trên CSDL
Khai báo: thường dùng 2 kiểu khai báo
¾Khái báo đơn giản:
Dim cmd As New OleDbCommand()
¾Khái báo có khởi tạo:
Dim cmd As New OleDbCommand (strSQL, objConnection)
Trong trường hợp này chuỗi truy vấn strSQL và
objConnection phải được khai báo trước hoặc đã được
gọi ở thủ tục hoặc hàm nào đó trước khi khai báo theo
kiểu này)
OleDbCommand Object:
Trang 11Windows Form programming with VB.Net 2005.
¾CommandText: truy vấn SQL, tên bảng hoặc tên
stored procedure muốn thực hiện trên nguồn dữ
liệu.
¾Commandtype: Giá trị chỉ định cho biết nội dung
CommandText phải dùng là gì với các giá trị sau:
Text: (mặc định) một câu lệnh SQL
TableDirect: tên của một hoặc nhiều bảng
Storedprocedure: tên một thủ tục nội lại trong
CSDL
(Các giá trị này khi lập trình VB.Net sẽ tự hiển thị để chọn)
22
Windows Form programming with VB.Net 2005.
thường dùng cho truy vấn có ĐK (WHERE)
Dim cmd As New OleDbCommand()
cmd.Connection = cn ‘ Connection Object is opened
cmd.CommandText = "sp_Login"
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("Uname", UserName)
cmd.Parameters.AddWithValue("Pws", Password)
Trang 12Windows Form programming with VB.Net 2005.
¾ExecuteReader: Phương thức này (không hoặc có 1
9CommandBehavior.SingleRow: Câu truy vấn
chỉ trả về 1 dòng duy nhất
CommandBehavior.SchemaOnly : Câu truy vấn
không trả về dữ liệu mà trả về thông tin các
cột của bảng
9CommandBehavior.CloseConnection: đối tượng
connection sẽ đóng khi đối tượng DataReader
đóng
Các Phương thức của Command Object:
¾ExecuteNonquery:
9Gọi thực hiện các câu truy vấn cập nhật dữ liệu:
INSERT, UPDATE, DELETE
9 Phương thức này trả về số dòng chịu tác động của
Command, nếu có lỗi trả về -1
¾ExecuteScalar:
9Phương thức này thực hiện lệnh của Command và
chỉ trả về giá trị của cột đầu tiên và dòng đầu tiên
9phương thức này khi muốn Command thực hiện
các hàm tính toán thống kê SUM, COUNT, AVG,
MAX, MIN trên nguồn dữ liệu ngay lúc thực thi
Các Phương thức của Command Object:
Trang 13Windows Form programming with VB.Net 2005.
Public Function GetCommand() as OleDbCommand
Dim cn As New OleDbConnection
Dim cmd As New OleDbCommand
Dim ConnectionState As ConnectionState
Dim strConnection As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Windows Form programming with VB.Net 2005.
Là đối tượng truy cập dữ liệu trực tiếp, sử dụng
cursor phía Server và duy trì kết nối với Server trong
suốt quá trình đọc dữ liệu, chứa dữ liệu trả về từ
phương thức ExecuteReader của command object
Các thuộc tính của OledbReader:
¾FieldCount: Trả về số dòng hiện hành của
DataReader.
¾IsClosed: Cho biết DataReader đã đóng chưa?
¾Item: Trị của cột truyền vào Tham số truyền có thể là
tên cột hoặc số thứ tự của cột (từ 0Æn-1 cột
OleDbReader Object: (DataReader)
Trang 14Windows Form programming with VB.Net 2005.
Các phương thức của OledbReader:
¾Close(): Đóng DataReader.
¾GetFieldType(i): kiểu dữ liệu của cột thứ i
¾GetName(i): Trả về tên của cột thứ i
¾GetOrdinal(name): Trả về số thứ tự của cột
(tính từ 0)
¾GetSchemaTable(): Trả về bảng chứa thông tin
mô tả cột của DataReader.
OleDbReader Object: (tt)
Các phương thức của OledbReader (tt):
¾GetValue(i): Trả về giá trị của cột thứ i
¾Read(): Di chuyển đến dòng kế tiếp và trả về True
nếu còn dòng để di chuyển, ngược lại trả về False
¾ NextResult(): Advances the data reader to the
next result, when reading the results of batch SQL
statements
OleDbReader Object: (tt)
Trang 15Windows Form programming with VB.Net 2005.
Public Function GetDataReader (ByVal StoreProceureName As String,
Optional ByVal arrParams() As String = Nothing, Optional ByVal
arrValues() As Object = Nothing) As OleDbDataReader
Dim rd As OleDbDataReader
Try
If Not (arrParams Is Nothing) Then
For nIndex As Integer = 0 To (arrParams.Length - 1)
Windows Form programming with VB.Net 2005.
OleDbDataAdapter Object (DataAdapter)
Là một bộ gồm bốn đối tượng Command:
¾SelectCommand: cho phép lấy thông tin từ nguồn
dữ liệu về
¾InsertCommand: cho phép thêm dữ liệu vào bảng
trong nguồn dữ liệu.
¾UpdateCommand: cho phép sửa đổi dữ liệu trên
bảng trong nguồn dữ liệu.
¾DeleteCommand: cho phép hủy bỏ dữ liệu trên bảng
trong nguồn dữ liệu.
Trang 16<lệnh>: Câu lệnh truy vấn hoặc tên storedprocedure để
thực hiện truy xuất từ nguồn dữ liệu
<objConnection>: Đối tượng Connection đã kết nối với
CSDL
OleDbDataAdapter Object (DataAdapter)
Các thuộc tính (Properties):
dung lệnh truy xuất các mẩu tin từ nguồn dữ liệu
dung lệnh hủy các mẩu tin trên nguồn dữ liệu
dung lệnh chèn các mẩu tin mới vào nguồn dữ liệu.
dung lệnh cập nhật các mẩu tin vào nguồn dữ liệu.
Trang 17Windows Form programming with VB.Net 2005.
OleDbDataAdapter Object (DataAdapter)
Các Phương thức OleDbDataAdapter:
¾Fill(<datatable>): Đổ dữ liệu vào DataTable có sẵn
¾Fill(<dataset>): Đổ dữ liệu vào DataSet có sẵn Dữ
liệu được lấy về Dataset dưới dạng các DataTable,
với tên mặc định là Table1, Table2,…
¾Fill(<dataset>,<tênDatatable>): Đổ dữ liệu vào
DataSet cho bảng <tênDatatable>; nếu chưa có,
bảng sẽ được tạo với tên là <tênDatatable> (Cách
này thường được dùng nhiều hơn)
34
Windows Form programming with VB.Net 2005.
OleDbDataAdapter Object (DataAdapter)
Chú ý:
¾Khi dùng nhiều DataAdapter để đổ dữ liệu của
nhiều bảng vào DataSet, nếu không chỉ rõ đổ vào
bảng nào trong DataSet, dữ liệu sẽ đổ chung vào một
bảng, số cột là tổng số cột có tên khác nhau trong
các bảng từ nguồn dữ liệu, trên mỗi dòng cột nào
không có dữ liệu tương ứng sẽ mang trị Null.
¾Chúng ta có thể dùng một DataAdapter để đổ dữ
liệu của nhiều bảng vào DataSet với nội dung lệnh
truy vấn là các lệnh liên tiếp và cách nhau bằng dấu
(;) (MS SQL Server)
Trang 18Windows Form programming with VB.Net 2005.
DataTable
Đối tượng chứa dữ liệu trên Dataset
Khai báo: Dim Ten_Bien as new DataTable
DataColums
DataColumn
Tạo mới DataColumn
Dim Ten_Cot New DataColumn(<tên cột>,<kiểudữ liệu>)
Trong đó:
<Têncột>: Tên muốn đặt cho cột
<Kiểu dữ liệu>: Kiểu dữ liệu của cột, được khai báo thông
qua cú pháp System.Type.GetType(“System.Tênkiểu”)
Đưa cột vào bảng:
TenBang.Columns.add(Ten_Cot)
Trang 19Windows Form programming with VB.Net 2005.
DataRows
DataRows là tập hợp các dòng dữ liệu của bảng Mọi
tham chiếu đến dòng đều thông qua tập hợp này Sau
đây là một số chức năng của DataRow
Các thuộc tính:
Rows.Count: Cho biết số dòng dữ liệu Trong DataTable
Rows.Item(i) hoặc Rows(i): tham chiếu đến dòng i
Rows.Item(i)(j): lấy dữ liệu của cột j trên dòng i
Rows.Item(i)(“Têncột”): lấy dữ liệu của cột có tên cột
trên dòng i (i bắt đầu từ 0)
38
Windows Form programming with VB.Net 2005.
DataRows
Để thêm dòng vào table: TableName.Rows.Add(<dong>)
Ví dụ: thêm một dòng dữ liệu vào Table Khoa
Dim dong As DataRow = Khoa.NewRow()
dong(0)= “VL“
dong(1)= “VậtLý“
Khoa.Rows.Add(dong)
Rows.RemoveAt(<chỉsố>): Xóa dòng khỏi bảng
Rows.Remove(dong): Xóa dòng khỏi bảng
Rows.Clear(): Xóa toàn bộ các dòng dữ liệu của bảng
Trang 20Windows Form programming with VB.Net 2005.
Dataview
Dataview: là“Khung nhìn” của DataTable, thôngqua
Dataview, ta có thể hiển thị dữ liệu lấy từ DataTable
theo yêu cầu của người dùng
Thuộc tính và phương thức quan trọng của Dataview
¾RowFilter: Biểu thức lọc của DataView để thay đổi cách
hiện thị dữ liệu
Cú pháp: Ten_view.RowFilter=“Tencot=Giá tri and/or …”
¾Sort :Biểu thức sắp xếp,
Cú pháp: Ten_view.Sort=“Tencot asc/desc,…”
¾Find:Tìm kiếm, trả về vị trí dòng thỏa điều kiện, tìm
theo cột nào phải sắp xếp dữ liệu theo cột đó,
Cú pháp: Ten_View.Sort = “Ten_Cot cần tìm”
vi_tri = Ten_view.Find(“Giá trị”)
Trang 21¾Nó được coi như là
một kho chứa các table
Tables của lớp DataSet.
(Table)
¾Khai báo
dim Ten_Bien as New DataSet()
Trang 22Windows Form programming with VB.Net 2005.
Các phương thức quan trọng của DataSet:
¾Ten_bien.Tables.Add(<tênbảng>): đưa bảng vào DataSet
¾Ten_bien.Tables.Remove(<tênbảng>): Xóa bảng ra khỏi
¾Ten_bien.Tables.Clear(): Xóa tất cả các bảng khỏi DataSet
¾Ten_Bien.Dispose: Xóa DataSet
¾Ten_Bien.Clear: Xóa toàn bộ nội dung trong DataSet:
Public Function UpdateRows(ByVal queryString As String, ByVal ds
As DataSet, ByVal tableName As String) As DataSet
Try
da.SelectCommand = New OleDbCommand(queryString, cn)
Dim cb As OleDbCommandBuilder = New
Trang 23Windows Form programming with VB.Net 2005.
DataGridView Control
¾Hiển thị dữ liệu dạng khung lưới dữ liệu thường được
lấy từ DataTable, DataView hoặc DataSet
Cú pháp lấy dữ liệu từ DataTable:
Tên_dgv DataSource = <Biến DataTable>
Cú pháp lấy dữ liệu từ DataView:
Tên_dgv DataSource = <Biến DataView>
Cú pháp lấy dữ liệu từ DataSet:
Tên_dgv DataSource = <Biến DataSet>
Tên_dgv DataMember = <Tên Bảng>
46
Windows Form programming with VB.Net 2005.