Bài giảng Lập trình .NET với VB.NET - Chương 8: Lập trình cơ sở dữ liệu với ADO.Net - Phan Trọng Tiến

Nội dung chính

1.  Tổng quan

2.  Tổng quan ADO .Net

3.  .Net Data Provider

4.  Demo: Lấy dữ liệu dùng ADO .Net

5.  Đối tượng DataSet

6.  Thiết kế và gắn kết dữ liệu

7.  Tích hợp XML

8.  Lab: Tạo ứng dụng ADO.Net

 

pdf 45 trang yennguyen 2300
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình .NET với VB.NET - Chương 8: Lập trình cơ sở dữ liệu với ADO.Net - Phan Trọng Tiến", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình .NET với VB.NET - Chương 8: Lập trình cơ sở dữ liệu với ADO.Net - Phan Trọng Tiến

Bài giảng Lập trình .NET với VB.NET - Chương 8: Lập trình cơ sở dữ liệu với ADO.Net - Phan Trọng Tiến
CHƯƠNG 8: LẬP TRÌNH CƠ SỞ 
DỮ LIỆU VỚI ADO .NET 
Phan Trọng Tiến 
BM Công nghệ phần mềm 
Khoa Công nghệ thông tin, VNUA 
Email: phantien84@gmail.com 
Website:  
1 
Nội dung chính 
1.  Tổng quan 
2.  Tổng quan ADO .Net 
3.  .Net Data Provider 
4.  Demo: Lấy dữ liệu dùng ADO .Net 
5.  Đối tượng DataSet 
6.  Thiết kế và gắn kết dữ liệu 
7.  Tích hợp XML 
8.  Lab: Tạo ứng dụng ADO.Net 
2 
Mục đích của chương 
q Chương này cung cấp sinh viên kiến thức 
cần thiết để tao các ứng dụng mức cao 
truy cập dữ liệu dùng VB.Net 
q Sau bài này sinh viên có thể: 
q Liệt kê các lợi ích ADO .Net 
q Tạo các ứng dụng dùng ADO .Net 
q Liệt kê các thành phần chính của đối tượng 
ADO.Net và các chức năng của nó. 
q Dùng VS.Net để thiết kế và gắn kết dữ liệu 
q Giải thích cách tích hợp XML cùng ADO.Net 
3 
1. Tổng quan 
q Bạn sẽ học cách sử dụng ADO .Net 
q Cách sử dụng đối tượng DataSet 
q Bạn sẽ học cách thiết kế dữ liệu trong 
VS.Net và cách gắn dữ liệu lên WinForm 
và WebForm. 
q Cuối cùng bạn sẽ học cách tích hợp XML 
vào ADO .Net 
4 
2. Tổng quan ADO .Net 
q Giới thiệu ADO .Net 
q Các lợi ích ADO .Net 
5 
Giới thiệu ADO .Net 
6 
Giới thiệu ADO.Net 
q  ADO.Net là một tập các lớp cho phép các ứng dụng .Net 
đọc và cập nhật thông tin DB và các nơi lưu trữ dữ liệu 
khác. Namespace: System.Data 
q  ADO.Net cung cấp đồng nhất cách truy cập các nguồn dữ 
liệu khác nhau như SQL Server, OLE DB, các nguồn dữ 
liệu không quan hệ như MS Exchange, và các tài liệu 
XML 
q  ADO.Net cải tiến khả năng disconnect tới dữ liệu. 
7 
Giới thiệu ADO.Net 
q  ADO.Net cung cấp hai .Net Data Providers: 
q .Net Data Provider cho SQL Server 
q .Net Data Provider cho OLE DB 
q  ADO.Net cung cấp nhiều công cụ cho việc đọc, cập nhật, 
thêm mới và xóa dữ liệu. Nhiều đối tượng trong thư viện 
là tương tự nhau và được nhận diện qua tên tiền tố của 
chúng ví dụ như SqlDataReader và OleDbDataReader 
cả hai đều cung cấp đọc các bản ghi từ nguồn dữ liệu. 
8 
Các lợi ích của ADO.Net 
q  Tương tự như ADO 
q  Được thiết kế cho dữ liệu không kết nối. 
q  Nằm trong nội tại .Net Framework nên dễ dàng trong việc 
sử dụng ngôn ngữ để phát triển. 
q  Hỗ trợ XML 
q ADO và XML có trước nhưng không tương thích 
q ADO dựa trên cơ sở dữ liệu quan hệ. 
q XML dựa trên cơ sở dữ liệu phân cấp. 
q ADO.Net kết hợp hai công nghệ này lại với nhau. 
9 
3. .Net Data Provider 
q  .Net Data Provider cho phép truy cập các nguồn dữ liệu xác định: 
q System.Data.SqlClient dùng truy câp SQL Server 7.0 trở lên 
q System.Data.OleDb dùng truy cập bất kỳ nguồn dữ liệu nào hỗ trợ OLE 
DB 
q  Dùng đối tượng Connection 
q Kết nối tới một Database 
q  Dùng đối tượng Command 
q Thực thi các câu lệnh 
q Dùng đối tượng Command với các Stored Procedure 
q  Dùng đối tượng DataReader 
q Tạo một luồng dữ liệu chỉ đọc 
q  Dùng đối tượng DataAdapter 
q để thay đổi dữ liệu nguồn và một DataSet 
10 
Dùng đối tượng Connection 
q SqlConnection 
Dim conSQL As SqlClient.SqlConnection 
conSQL = New SqlClient.SqlConnection( ) 
conSQL.ConnectionString = “Server = localhost; DataSource = Northwind; Uid = sa; 
Pwd = sa;” 
conSQL.Open( ) 
q OleDbConnection 
Dim conAccess As OleDb.OleDbConnection 
conAccess = New OleDb.OleDbConnection( ) 
conAccess.ConnectionString = "Provider= 
Microsoft.Jet.OLEDB.4.0;Data Source=c:\NWind.MDB" 
conAccess.Open( ) 
11 
Dùng đối tượng Command 
q  Có hai cách để tạo đối 
tượng Command: 
q Sử dụng Contructor 
Command 
q Sử dụng phương thức 
CreateCommand 
q  Có ba cách để thực thi 
một Command: 
q ExecuteReader 
q ExecuteScalar 
q ExecuteNonQuery 
q ExecuteXMLReader 
12 
Dim commSQL As SqlClient.SqlCommand 
commSQL = New SqlClient.SqlCommand( ) 
commSQL.Connection = conSQL 
commSQL.CommandText = "Select Count(*) from Authors" 
MessageBox.Show(commSQL.ExecuteScalar( ).ToString) 
Dùng đối tượng Command với các Stored 
Procedure 
q Tạo một đối tượng Command 
q Thiết lập CommandType là StoredProcedure 
q Dùng phương thức Add để tạo và thiết lập các 
biến (Parameter) 
q Dùng thuộc tính ParameterDirection để thiết 
lập kiểu biến 
q Gọi phương thức ExecuteReader 
q Dùng đối tượng DataReader để hiển thị hoặc 
duyệt qua các bản ghi và đóng khi kết thúc 
q Truy cập đầu ra và trả về các biến 
13 
Demo: Dùng đối tượng Command 
q Tạo một Store trong SQL Server 
CREATE PROCEDURE byroyalty @percentage int 
AS 
select au_id from titleauthor 
where titleauthor.royaltyper = @percentage 
q Code VB.Net 
Imports System.Data.SqlClient 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal 
e As System.EventArgs) Handles Button1.Click 
Dim conSQL As SqlClient.SqlConnection 
conSQL = New SqlClient.SqlConnection( ) 
conSQL.ConnectionString = “Server = localhost;DataBase = Pubs;" & _ 
“UID = sa;PWD = sa" 
conSQL.Open( ) 
Dim commSQL As SqlClient.SqlCommand = New SqlCommand( ) 
commSQL.Connection = conSQL 
commSQL.CommandType = CommandType.StoredProcedure 
commSQL.CommandText = "byroyalty" 
14 
Demo: Dùng đối tượng Command 
Dim paramSQL As New SqlClient.sqlParameter( _ 
"@percentage", SqlDbType.Int) 
paramSQL.Direction = ParameterDirection.Input 
paramSQL.Value = "30" 
commSQL.Parameters.Add(paramSQL) 
Dim datRead As SqlClient.SqlDataReader 
datRead = commSQL.ExecuteReader( ) 
Do While datRead.Read( ) 
MessageBox.Show(datRead(0).ToString) 
Loop 
datRead.Close( ) 
End Sub 
15 
Dùng đối tượng DataReader 
q Đọc dữ liệu 
Dim commSQL As SqlClient.SqlCommand = New _ 
SqlClient.SqlCommand( ) 
commSQL.Connection = conSQL 
commSQL.CommandText ="Select au_lname,au_fname from authors" 
Dim datRead As SqlClient.SqlDataReader 
datRead = commSQL.ExecuteReader( ) 
Do Until datRead.Read = False 
MessageBox.Show(datRead.GetString(1) & " " 
& datRead.GetString(0)) 
Loop 
datRead.Close( ) 
q Lấy thông tin 
q Trả về nhiều tập hợp kết quả 
16 
Dùng đối tượng DataAdapter 
q Được sử dụng như một liên kết giữa 
DataSource và Các Table lưu trữ trong 
Cache 
Dim adaptSQL As New SqlClient.SqlDataAdapter( _ 
"Select * from authors", conSQL) 
Dim datPubs As DataSet = New DataSet( ) 
adaptSQL.Fill(datPubs, "NewTable") 
' Manipulate the data locally 
adaptSQL.Update (datPubs, "NewTable") 
17 
4. Demo: Lấy dữ liệu dùng ADO .Net 
q Bạn sẽ học cách lấy dữ liệu từ CSDL 
SQL Server bằng việc dùng đối tượng 
SQLDataAdapter trong VB.Net. 
18 
5. Đối tượng DataSet 
q Tổng quan về dữ liệu không kết nối 
q Đối tượng DataSet 
q Cư trú dữ liệu trong DataSet 
q Sử dụng Relationship trong DataSet 
q Sử dụng các Constraint 
q Cập nhật dữ liệu trong DataSet 
q Cập nhật dữ liệu tại nguồn 
19 
Tổng quan về dữ liệu không kết nối 
20 
Tổng quan về dữ liệu không kết nối 
q Mỗi công nghệ truy cập dữ liệu đều đã được cải thiện 
khái niêm không kết nối, nhưng đến ADO.Net mới 
cung cấp giải pháp cách đầy đủ. 
q ADO.Net được thiết kế dùng cho Internet 
q ADO.Net sử dụng XML như là các định dạng truyền 
tải. 
q ADO.Net cung cấp một đối tượng mới cho việc 
caching dữ liệu trên máy client. Đối tượng này là 
DataSet 
21 
Đối tượng DataSet 
22 
Cư trú dữ liệu trong DataSet 
q  Cư trú dữ liệu trong DataSet từ một RDBMS 
Dim adaptSQL As SqlClient.SqlDataAdapter 
adaptSQL = New SqlClient.SqlDataAdapter( 
"Select * from authors", conSQL) 
Dim datPubs As DataSet = New DataSet( ) 
adaptSQL.Fill(datPubs, "NewTable") 
q  Lập trình tạo Dataset 
Dim datPubs As DataSet = New DataSet( ) 
Dim tblAuthors As DataTable = New DataTable("authors") 
tblAuthors.Columns.Add("AuthorID", System.Type.GetType 
("System.Int32")) 
23 
Sử dụng Relationship trong DataSet 
q Tạo Relationship 
Dim relPubsTitle As DataRelation = New DataRelation( 
"PubsTitles", 
 datPubs.Tables("Publishers").Columns("pub_id"), 
 datPubs.Tables("Titles").Columns("pub_id")) 
datPubs.Relations.Add(relPubsTitle) 
q Truy cập dữ liệu quan hệ 
Dim PubRow As DataRow, TitleRows( ) As DataRow 
PubRow = datPubs.Tables("Publishers").Rows(0) 
TitleRows = PubRow.GetChildRows("PubsTitles") 
24 
Sử dụng các Constraint 
q  Tạo New Constraint 
q ForeignKeyConstraints: đây là ràng buộc xảy ra khi một hàng 
con cũng được cập nhật khi hàng cha được update hoặc delete 
q UniqueConstraints: đây là ràng buộc đảm bảo các giá trị trong 
một cột hoặc các cột là duy nhất. 
q  Sử dụng Constraint tồn tại 
adaptSQL = New SqlClient.SqlDataAdapter("Select title_id, 
title, type, price from titles", conSQL) 
adaptSQL.FillSchema(datPubs, schematype.Source, "Titles") 
adaptSQL.Fill(datPubs, "Titles") 
'Edit some data 
adaptSQL.Fill(datPubs, "Titles") 
25 
Cập nhật dữ liệu trong DataSet 
q  Thêm Rows 
Dim drNewRow As DataRow = datPubs.Tables("Titles").NewRow 
'Populate columns 
datPubs.Tables("Titles").Rows.Add(drNewRow) 
q  Thay đổi Rows 
drChangeRow.BeginEdit( ) 
drChangeRow("Title") = drChangeRow("Title").ToString & " 1" 
drChangeRow.EndEdit( ) 
q  Xóa dữ liệu 
datPubs.Tables("Titles").Rows.Remove(drDelRow)) 
26 
Cập nhật dữ liệu tại nguồn 
q Chỉ rõ ràng các cập nhật 
q Tự động phát sinh update 
27 
Dim cmd As cmd.CommandText = "Insert into titles(" & _ 
"title_id, title, type) values(@t_id,@title,@type)" 
cmd.Parameters.Add("@t_id",SqlDbType.VarChar,6,"title_id") 
cmd.Parameters.Add("@title",SqlDbType.VarChar,80,"title") 
cmd.Parameters.Add("@type",SqlDbType.Char,12,"type") 
adaptSQL.InsertCommand = cmd 
adaptSQL.Update(datPubs, "titles") 
Dim sqlCommBuild As New SqlCommandBuilder(adaptSQL) 
adaptSQL.Update(datPubs, "titles") 
MsgBox(sqlCommBuild.GetInsertCommand.ToString) 
Demo: Sử dụng DataSet 
28 
6.Thiết kế và gắn kết dữ liệu 
q Thiết kế DataSet 
q Tùy chỉnh form dữ liệu 
q Gắn dữ liệu trong WinForms 
q Gắn dữ liệu trong WebForms 
29 
Thiết kế DataSet 
q Tùy chỉnh cấu hình DataAdapter 
q Phát sinh đối tượng DataAdapter trong thủ 
tục InitializeComponent dùng trong code của 
bạn. 
q Công cụ phát sinh DataSet 
q Phát sinh một DataSet trên cơ sở dữ liệu đã 
tồn tại một DataAdapter. 
30 
Tùy chỉnh cấu hình DataAdapter 
q Tên kết nối 
q Kiểu truy vấn 
q Câu lệnh SQL 
q Hoặc Stored Procedure mới 
q Hoặc Stored Procedure đã tồn tại 
q Các chi tiết lựa chọn câu truy vấn 
31 
Công cụ phát sinh DataSet 
q  Đây là công cụ phát sinh DataSet tự động từ 
DataAdapter 
32 
Tùy chỉnh form dữ liệu 
q Các thông tin được yêu cầu: 
q Tên của DataSet 
q Connection được sử dụng 
q Các Table hoặc các View nào, và các cột của 
chúng. 
q Cách hiển thị dữ liệu 
q Những button nào được tạo 
33 
Demo: Sử dụng Form tùy chỉnh dữ liệu 
34 
Gắn dữ liệu trong WinForms 
q Cách gắn đơn giản 
q Cách gắn phức tạp 
35 
da = New SqlClient.SqlDataAdapter("Select au_lname, " & _ 
"au_fname from authors", sqlconn) 
da.Fill(ds, "authors") 
TextBox1.DataBindings.Add("Text", _ 
ds.Tables("authors"), "au_fname") 
da = New SqlClient.SqlDataAdapter("Select au_lname, " & _ 
"au_fname from authors", sqlconn) 
da.Fill(ds, "authors") 
DataGrid1.DataSource = ds.Tables("authors") 
Gắn dữ liệu trong WebForms 
q Gắn dữ liệu chỉ đọc 
36 
Dim sqlComm As New SqlClient.SqlCommand("Select“ &_ 
“ * from authors", sqlconn) 
Dim sqlReader As SqlClient.SqlDataReader 
sqlReader = sqlComm.ExecuteReader 
DataGrid1.DataSource( ) = sqlReader 
DataGrid1.DataBind( ) 
7.Tích hợp XML 
q Tại sao phải dùng schemas (giản đồ)? 
q Miêu tả cấu trúc XML 
q Tạo Schemas 
q Sử dụng XML và Schemas trong 
ADO.Net 
q DataSets và XmlDataDocuments 
37 
Tại sao phải dùng Schemas 
q Định nghĩa định dạng của dữ liệu 
q Sử dụng để kiểm tra tính hợp lệ 
q Có lợi thế hơn qua việc định nghĩa các 
kiểu tài liệu (document type definitions - 
DTSs ) 
q Cú pháp XML 
q Sử dụng lại các kiểu 
q Nhóm một nhóm các phần tử  
38 
Miêu tả cấu trúc XML 
q Schemas có thể được miêu tả gồm: 
q Các phần tử trong tài liệu (E) 
q Các thuộc tính tính trong tài liệu (A) 
q Các quan hệ giữa phần tử và thuộc tính (R) 
q Các kiểu dữ liệu 
q Thứ tự của các phần tử 
q Các phần tử nào là tùy chọn 
39 
Ví dụ một tài liệu XML 
0736 
Lucerne Publishing 
Boston 
MA 
USA 
0877 
Litware, Inc. 
Washington 
DC 
USA 
40 
Ví dụ Tài liệu này liên kết một schema để miêu tả 
cấu trúc 
<xsd:schema id="pubs“ targetNamespace="" 
xmlns="“ xmlns:xsd="" 
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata“ attributeFormDefault="qualified“ 
elementFormDefault="qualified"> 
41 
Tạo Schemas 
q Tạo Schemas từ các tài liệu XML đã tồn 
tại. 
q Tạo Schemas từ Databases 
q Làm việc với Schemas 
q Kiểm tra các tài liệu XML dựa vào 
Schema 
42 
Dùng dữ liệu XML và schemas trong ADO.Net 
q Nạp dữ liệu XML vào một DataSet 
q Sử dụng kiểu DataSet được định nghĩa 
q Tăng hiệu năng 
q Đơn giản trong việc coding 
43 
Dim datXML As DataSet = New DataSet() 
datXML.ReadXml("c:\publishers.xml") 
MessageBox.Show(datXML.Tables(0).Rows(0)(0).ToString) 
MessageBox.Show(pubs.Publishers(0).pub_id) 
DataSets và XmlDataDocuments 
44 
Demo: Sử dụng XML Schema 
45 

File đính kèm:

  • pdfbai_giang_lap_trinh_net_voi_vb_net_chuong_8_lap_trinh_co_so.pdf