Chuyên đề Ngôn ngữ lập trình Visual Basic.NET - Chương 4: VB.NET và cơ sở dữ liệu
Cơsởdữliệu (Database)
Bảng (table) & trường (field)
Khóa
Mối kết hợp (relationship)
Tóm tắt nội dung Chuyên đề Ngôn ngữ lập trình Visual Basic.NET - Chương 4: VB.NET và cơ sở dữ liệu, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
p các
nhóm thông tin khác nhau gl bảng (table) được kết hợp lại
theo cách thức nào đó.
TD: Trong TD trên cơ sở dữ liệu có thể gồm 3 bảng:
- KhachHang(MaKH, TenKH, DiachiKH)
- HangHoa(MaHang, TenHang, Dongia, Ghichu)
- DatHang(STTDH, MaKH, MaHang, Soluong)
Cơ sở dữ liệu [2]
5 Bảng (table): chứa các mẩu tin là các mẩu dữ liệu riêng rẽ
trong phân nhóm dữ liệu.
Mẩu tin (record): chứa các trường (field), mỗi trường thể
hiện một bộ phận dữ liệu của mẩu tin.
TD bảng KhachHang:
Cơ sở dữ liệu [3]
Trường 3Trường 2Trường 1
02 LTTTrần Văn BaKH02Mẩu tin 2
01 THĐNV CườngKH01Mẩu tin 1
DiachiTenKHMaKH
6
Khóa chính (primary key): là một hay nhiều trường mà chúng
xác định duy nhất mỗi mẩu tin trong bảng.
TD Khóa chính bảng KhachHang là MaKH.
HangHoa là MaHang.
DatHang là STTDH, MaKH, MaHang
Khóa ngoại (foreign key): là một hay nhiều trường ở một
bảng nhưng chúng là khóa chính ở một bảng khác.
TD trong bảng DatHang ta có các khóa ngoại là MaKH (là
khóa chính của KhachHang), MaHang (khóa chính của
HangHoa).
Cơ sở dữ liệu [4]
7
Mối kết hợp (relationship): sự liên kết giữa các bảng.
1-1: một mẩu tin trong 1 bảng xác định 1 mẩu tin trong bảng
khác.
1-n: mỗi mẩu tin trong 1 bảng xác định nhiều mẩu tin trong
bảng khác.
TD:
Cơ sở dữ liệu [5]
8
n-n: nhiều mẩu tin trong 1 bảng liên kết với nhiều mẩu tin
trong bảng khác.
Mối kết hợp này cần thêm bảng thứ 3 lưu các quan hệ giữa 2
bảng.
TD: CSDL về
người sử dụng:
Cơ sở dữ liệu [6]
9 Toàn vẹn tham chiếu (referential integrity): xác định mỗi
khi dữ liệu trong các bảng bị thay đổi (thêm, sửa, xóa) các
mối kết hợp vẫn không bị ảnh hưởng.
- Cascade update: Nếu có sự thay đổi giá trị của 1 khóa, giá
trị của khóa đó ở các bảng khác cũng thay đổi theo.
- Cascade delete: Nếu một mẩu tin bị xóa, tất cả các mẩu tin
có liên quan trong cơ sở dữ liệu bị xóa theo.
Thuận lợi: Không cần viết mã lệnh để cập nhật lại cơ sở dữ
liệu mỗi khi có sự thay đổi trên khóa chính.
Tuy nhiên chúng vẫn mặt hạn chế.
Cơ sở dữ liệu [7]
10
Bài 2: Ngôn ngữ hỏi SQL
Structure Query Language (SQL)
Lựa chọn dữ liệu với câu lệnh Select
Cập nhật dữ liệu với Update
Chèn thêm dữ liệu với Insert
Xóa dữ liệu với Delete
11
Structure Query Language
Ngôn ngữ CSDL chuẩn.
Gồm: ngôn ngữ định nghĩa dữ liệu, ngôn ngữ
thao tác dữ liệu trao đổi, tạo view, cấp quyền…
Thường sử dụng: Select, Update, Insert, Delete.
12
SQL - Select [1]
Lựa chọn dữ liệu theo một số điều kiện nào đó.
Mệnh đề Select
TD: Với CSDL người dùng
- Tìm kiếm tất cả các người dùng
Select UserName From Users
- Nếu muốn tên các người dùng không trùng nhau:
Select Distinct UserName From RoleUser
- Ký tự *: chỉ tất cả các trường
Select * From Users
- Sau Select có thể là một biểu thức
Select RoleID*10, RoleName From Roles
13
Mệnh đề Where: lọc & kết nối dữ liệu.
TD:
- Tìm các tên quyền có mã >3
Select RoleName From Roles Where RoleID>3
- Tìm các bộ (người dùng, tên quyền) tương ứng với mã quyền >3
Select UserName, RoleName From Roles, RoleUser
Where RoleUser.RoleID = Roles.RoleID AND
Roles.RoleID > 3
Các phép toán:
- So sánh: >, >=, , BETWEEN…AND
- Logic: AND, NOT, OR
TD: Tìm các tên quyền có mã từ 2 đến 4
Select RoleName From Roles
Where RoleID BETWEEN 2 AND 4
SQL - Select [2]
14
Phép toán LIKE trên chuỗi: đối chiếu mẫu.
- %: ứng với chuỗi con bất kỳ.
- _:ứng với 1 ký tự bất kỳ.
TD: - Tìm các tên quyền có ký tự cuối là e:
Select RoleName From Roles
Where RoleName LIKE “%e”
- Tìm các tên người dùng có ký tự thứ 2 là h
Select UserName From Users
Where UserName LIKE “_h%”
Mệnh đề sắp thứ tự Order By
- ASC: thứ tự tăng.
- DESC: thứ tự giảm.
TD: Lựa chọn các tên quyền có mã >1 và sắp xếp chúng theo thứ
tự tăng.
Select RoleName From Roles
Where RoleID>1 Order By RoleName ASC
SQL - Select [3]
15
Thêm 1 hay nhiều dòng (mẩu tin) vào một bảng đã có.
TD:
- Thêm người dùng nqtoan vào bảng User
Insert Into Users Values(“nqtoan”, ”abc”)
- Ta có thể chỉ rõ tên trường & giá trị cần xen.
Insert Into Users(Password, UserName)
Values(“abc”, “nqtoan”)
- Thêm cho tất cả người dùng quyền mới có mã là 4
Insert Into RoleUser
Select UserName As UserName, 4 As RoleID
From Users
SQL - Insert
16
UpdateThay đổi giá trị các dòng (mẩu tin).
TD:
- Sửa lại mật khẩu của người dùng lhbao là abc
Update Users
Set Password = “abc”
Where UserName = “lhbao”
Delete: Xóa các dòng (mẩu tin) thỏa điều kiện.
TD:
- Xóa tất cả các dòng (mẩu tin) của bảng RoleUser
Delete From RoleUser
- Xóa tất cả các quyền của người dùng lhbao
Delete From RoleUser
Where UserName = “lhbao”
SQL - Update & Delete
17
Bài 3: Các thành phần truy
cập dữ liệu
Ứng dụng Client-Server
Các thành phần truy cập dữ liệu
18
Giới thiệu
lưu
trong
Cơ sở dữ liệu
Client
Các kỹ thuật
truy cập dữ liệu
19
Ứng dụng Client-Server
Client Server
Cung cấp dữ liệu
cho Client
P
h
ầ
n
m
ề
m
C
l
i
e
n
t
C
ơ
s
ở
d
ữ
l
i
ệ
u
20
Data Access Components -
Các thành phần truy cập dữ liệu
Database
User Server đang chạy
Database
Database
Yêu cầu dữ liệu
Gởi dữ liệu
Server tắtPhần mềm Client
Yêu cầu dữ liệu
Thông báo lỗi
DAC
(ODBC, OLE DB,
ADO, ADO.net)
21
Bài 4: ADO.NET
Giới thiệu về ADO.NET
Các thành phần của ADO.NET
DataBinding
22
ADO.NET
Được giới thiệu với Microsoft .Net Framework
Sử dụng eXtensible Marked Language (XML) để
vận chuyển dữ liệu
23
Kiến trúc ADO.NET
Database
XML
P r e
s e n
t a t
i o n
T i e
r
D a
t a
T i e
rXML
24
Thành phần của ADO.NET
DataSet
.NET data provider: Connection, Command,
DataReader, DataAdapter.
25
.NET DATA PROVIDERS
Có thể truy cập, sửa đổi, dữ liệu nhờ đối tượng
Connection & Command.
Đối tượng Connection: thiết lập một nối kết dữ liệu giữa
ứng dụng & CSDL.
System.Data.OleDbSystem.Data.SqlClient
System.DataSystem.Data
OLE DB .NET Data ProviderSQL .NET Data Provider
26
Đối tượng Connection (1)
Phụ thuộc vào CSDL muốn nối kết.
Gồm 2 loại:
• SqlConnection
• OleDbConnection
Imports
Namespace="System.Data.OleDb"
Imports Namespace="System.Data.
SqlClient"
Imports Namespace="System.Data" Imports Namespace="System.Data"
OLE DB .NET Data ProviderSQL .NET Data Provider
27
Đối tượng Connection (2)
sqlcon = New SqlConnection ("server=HoaiBao; uid=sa;
pwd=sa; database=pubs")
adocon=New
OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0; _
Data Source=D:\\pubs.mdb”)
28
Đối tượng Connection (3)
Close
CreateCommand
Open
ConnectionString
DataBase
29
Đối tượng Command (1)
Thực thi một câu lệnh (SQL, Stored Procedure,…).
Gồm:
- SQLCommand
- OleDbCommand
Thuộc tính
- Connection: nối kết CSDL.
- CommandType: kiểu Command (Text, Stored Procedure,
Table Direct) được chỉ ra trong CommandText.
Thực thi Command:
- ExecuteNonQuery
- ExecuteScalar
- ExecuteReader
30
Đối tượng Command (2)
Dim sqlcom As New SqlCommand("select * from
employees", sqlcon)
Dim oleCom As New OleDbCommand("select * from
employees”, adocon)
Lấy dữ liệu về
31
Đối tượng Command (3)
Dim inscom As New SqlCommand("insert into employees
values (‘1234',‘Lam',‘H',‘Bao',7,100,0877, '1979-11-
11T00:00:00 ')",sqlcon)
Dim inscom As New OleDbCommand ("insert into
employees values (‘1234',‘Lam',‘H',‘Bao',7,100,0877,
'1979-11-11T00:00:00 ')", adocon)
Thêm dữ liệu vào CSDL
32
Đối tượng Command (4)
Dim mycommand As New SqlCommand("UPDATE employee SET
job_id=11 WHERE fname=‘Bao'", sqlcon)
Dim mycommand As New OleDbCommand("UPDATE employee
SET job_id=11 WHERE fname=‘Bao'", adocon)
Cập nhật dữ liệu
33
Đối tượng Command (5)
Dim delcom As New SqlCommand("delete from employee
WHERE fname=‘Bao'", sqlcon)
Dim delcom As New OleDbCommand("delete from employee
WHERE fname=‘Bao'", adocon)
Xóa dữ liệu
34
DATASET (1)
Là đối tượng lưu dữ liệu được truy xuất từ cơ sở dữ liệu.
Mô hình:
Tạo Dataset: tạo đối tượng của lớp Dataset.
TD: ‘ Tạo Dataset có tên là EmpInfor
Dim empDS As New Dataset(“EmpInfor”)
‘ Không cần chỉ tên của Dataset
Dim empDS As New Dataset()
Client ServerDataset
Gởi Dataset
tới Client
Gởi dữ liệu
tới Dataset
Client sửa
đổi Dataset
Cập nhật Dataset
lên Server
35
Thuộc tính
- Tables: tập các bảng của Dataset.
- Item: một bảng xác định trong Dataset.
Phương thức:
- Add: thêm một bảng.
- RemoveAt: xóa một bảng ở vị trí xác định.
DataTable: là bảng lấy về từ CSDL.
- DataColumn: các cột trong DataTable.
- DataRow: dòng dữ liệu thật sự.
DATASET (2)
36
Typed DataSet
Có thể tạo đối tượng từ lớp Dataset sẵn có
trong dự án.
Cho phép truy cập trực tiếp tên bảng hay tên
cột.
Hiệu quả khi viết mã lệnh.
37
UnTyped DataSet
Kế thừa từ lớp Dataset.
Các bảng và cột được truy xuất thông qua các tập
hợp tương ứng; không thể tạo một lớp Dataset
mới nhờ tập tin lược đồ XML.
38
DataAdapter (1)
Điền dữ liệu từ CSDL vào Dataset.
Cập nhật CSDL với dữ liệu trong Dataset
39
DataAdapter (2)
Lấy dữ liệu từ CSDLSelectCommand
Ý nghĩaThuộc tính
DeleteCommand
UpdateCommand Cập nhật CSDL dựa vào thay đổi trong
Dataset
InsertCommand
Đưa dữ liệu vào DataSet nhờ thực thi câu
truy vấn trong SelectCommand
Fill
Ý nghĩaPhương thức
40
Sử dụng DataAdapter
Nối kết đến CSDL (Connection)
Tạo đối tượng DataAdapter
Chỉ ra câu truy vấn trong thuộc tính
SelectCommand của DataAdapter.
Điền dữ liệu từ DataAdapter vào Dataset
41
DATABINDING
Ràng buộc giá trị trong nguồn dữ liệu với điều khiển của
Winform.
Simple Data Binding: 1 giá trị từ dataset ràng buộc với 1 điều
khiển.
TD:
txtSa.DataBindings.Add(“Text”,
ds.Tables(“Employes”), ”Salary”)
Complex DataBinding: một điều khiển ràng buộc toàn bộ
dataset. Chỉ có điều khiển DataGrid & ComboBox hỗ trợ loại
này.
TD:
cboDPName.DataSource = ds.Tables(“Employes”)
cboDPName.DisplayMember = “EmployeesName”
42
Một thí dụ
File đính kèm:
Chuyên đề Ngôn ngữ lập trình Visual Basic.NET - Chương 4_VB.NET và cơ sở dữ liệu.pdf

