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