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)

pdf11 trang | Chuyên mục: Visual Basic 6.0 | Chia sẻ: dkS00TYs | Lượt xem: 3395 | Lượt tải: 2download
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:

  • pdfChuyên đề Ngôn ngữ lập trình Visual Basic.NET - Chương 4_VB.NET và cơ sở dữ liệu.pdf
Tài liệu liên quan