ứ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.[r]
(1)Chương 8: Sử dụng ADO .Net
Phan Trọng Tiến
Department of Software Engineering Hanoi University of Agriculture
Office location: 3rd floor, Administrative
building
(2)Nội dung chính
1 Tổng quan
2 Tổng quan ADO Net
3 .Net Data Provider
4 Demo: Lấy liệu dùng ADO Net
5 Đối tượng DataSet
6 Thiết kế gắn kết liệu
7 Tích hợp XML
(3)Mục đích chương
Chương cung cấp sinh viên kiến
thức cần thiết để tao ứng dụng
mức cao truy cập liệu dùng VB.Net
Sau sinh viên có thể:
Liệt kê lợi ích ADO Net
Tạo ứng dụng dùng ADO Net
Liệt kê thành phần đối
tượng ADO.Net chức
Dùng VS.Net để thiết kế gắn kết
liệu
Giải thích cách tích hợp XML
(4)1 Tổng quan
Bạn học cách sử dụng ADO Net
Cách sử dụng đối tượng DataSet
Bạn học cách thiết kế liệu
VS.Net cách gắn liệu lên WinForm WebForm.
Cuối bạn học cách tích hợp
(5)2 Tổng quan ADO Net
Giới thiệu ADO Net
(6)(7)Giới thiệu ADO.Net
ADO.Net tập lớp cho phép
ứng dụng Net đọc cập nhật thông tin DB nơi lưu trữ liệu khác
Namespace: System.Data
ADO.Net cung cấp đồng cách truy cập
các nguồn liệu khác SQL
Server, OLE DB, nguồn liệu không quan hệ MS Exchange, tài liệu XML
ADO.Net cải tiến khả disconnect tới
(8)Giới thiệu ADO.Net
ADO.Net cung cấp hai Net Data Providers:
Net Data Provider cho SQL Server Net Data Provider cho OLE DB
ADO.Net cung cấp nhiều công cụ cho việc
đọc, cập nhật, thêm xóa liệu Nhiều đối tượng thư viện tương tự nhận diện qua tên tiền tố chúng ví dụ SqlDataReader
OleDbDataReader hai cung cấp
(9)Các lợi ích ADO.Net
Tương tự ADO
Được thiết kế cho liệu không kết nối Nằm nội Net Framework nên rễ
dàng việc sử dụng ngôn ngữ để phát triển
Hỗ trợ XML
ADO XML có trước khơng tương thích ADO dựa sở liệu quan hệ
XML dựa sở liệu phân cấp
(10)3 .Net Data Provider
Net Data Provider cho phép truy cập nguồn
liệu xác định:
System.Data.SqlClient dùng truy câp SQL Server
7.0 trở lên
System.Data.OleDbClient dùng truy cập
nguồn liệu hỗ trợ OLE DB
Dùng đối tượng Connection
Kết nối tới Database
Dùng đối tượng Command
Thực thi câu lệnh
Dùng đối tượng Command với Stored Procedure Dùng đối tượng DataReader
Tạo luồng liệu đọc
Dùng đối tượng DataAdapter
(11)Dùng đối tượng Connection
SqlConnection
Dim conSQL As SqlClient.SqlConnection conSQL = New SqlClient.SqlConnection( )
conSQL.ConnectionString = “Server = localhost; DataSource = Northwind; Uid = sa; Pwd = sa;”
conSQL.Open( )
OleDbConnection
Dim conAccess As OleDb.OleDbConnection conAccess = New OleDb.OleDbConnection( ) conAccess.ConnectionString = "Provider=
(12)Dùng đối tượng Command
Có hai cách để tạo
đối tượng Command:
Sử dụng Contructor
Command
Sử dụng phương
thức
CreateCommand
Có ba cách để thực
thi Command:
ExecuteReader ExecuteScalar
ExecuteNonQuery ExecuteXMLReader
Dim commSQL As SqlClient.SqlCommand commSQL = New SqlClient.SqlCommand( ) commSQL.Connection = conSQL
(13)Dùng đối tượng Command với các Stored Procedure
Tạo đối tượng Command Thiết lập CommandType
StoredProcedure
Dùng phương thức Add để tạo thiết lập
các biến (Parameter)
Dùng thuộc tính ParameterDirection để
thiết lập kiểu biến
Gọi phương thức ExecuteReader
Dùng Record, Close DataReader Truy cập Output trả biến
(14)Demo: Dùng đối tượng Command
Tạo Store SQL Server
CREATE PROCEDURE byroyalty @percentage int AS
select au_id from titleauthor
where titleauthor.royaltyper = @percentage
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
(15)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( )
(16)Dùng đối tượng DataReader Đọc 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( ) Lấy thông tin
(17)Dùng đối tượng DataAdapter
Được sử dụng liên kết
DataSource 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
(18)4 Demo: Lấy liệu dùng ADO Net
Bạn học cách lấy liệu từ CSDL
SQL Server việc dùng đối tượng
(19)5 Đối tượng DataSet
Tổng quan liệu không kết nối
Đối tượng DataSet
Cư trú liệu DataSet
Sử dụng Relationship DataSet
Sử dụng Constraint
Cập nhật liệu DataSet
(20)(21)Tổng quan liệu không kết nối
Mỗi công nghệ truy cập liệu
được cải thiện khái niêm không kết nối, nhưng đến ADO.Net cung cấp giải pháp cách đầy đủ.
ADO.Net thiết kế dùng cho Internet ADO.Net sử dụng XML định
dạng truyền tải.
ADO.Net cung cấp đối tượng
(22)(23)Cư trú liệu DataSet
Cư trú liệu DataSet 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")
Lập trình tạo Dataset
Dim datPubs As DataSet = New DataSet( )
(24)Sử dụng Relationship DataSet
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)
Truy cập liệu quan hệ
Dim PubRow, TitleRow As DataRow, TitleRows( ) As
DataRow
(25)Sử dụng Constraint
Tạo New Constraint
ForeignKeyConstraints: ràng buộc điều
khiển hàng hàng cha update delete
UniqueConstraints: ràng buộc đảm bảo
các giá trị cột cột
Sử dụng Constraint tồn
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
(26)Cập nhật liệu DataSet
Thêm Rows
Dim drNewRow As DataRow =
datPubs.Tables("Titles").NewRow 'Populate columns
datPubs.Tables("Titles").Rows.Add(drNewRow)
Thay đổi Rows
drChangeRow.BeginEdit( )
drChangeRow("Title") = drChangeRow("Title").ToString & " 1"
drChangeRow.EndEdit( )
Xóa liệu
(27)Cập nhật liệu nguồn
Chỉ rõ ràng cập nhật
Tự động phát sinh update
Dim comm As comm.CommandText = "Insert into titles(" & _ "title_id, title, type) values(@t_id,@title,@type)"
comm.Parameters.Add("@t_id",SqlDbType.VarChar,6,"title_id") comm.Parameters.Add("@title",SqlDbType.VarChar,80,"title") comm.Parameters.Add("@type",SqlDbType.Char,12,"type") adaptSQL.InsertCommand = comm
adaptSQL.Update(datPubs, "titles")
Dim sqlCommBuild As New SqlCommandBuilder(adaptSQL) adaptSQL.Update(datPubs, "titles")
(28)(29)6.Thiết kế gắn kết liệu
Thiết kế DataSet
Tùy chỉnh form liệu
Gắn liệu WinForms
(30)Thiết kế DataSet
Tùy chỉnh cấu hình DataAdapter
Phát sinh đối tượng DataAdapter
thủ tục InitializeComponent dùng code bạn
Công cụ phát sinh DataSet
Phát sinh DataSet sở liệu
(31)Tùy chỉnh cấu hình DataAdapter
Tên kết nối
Kiểu truy vấn
Câu lệnh SQL
Hoặc Stored Procedure
Hoặc Stored Procedure tồn
(32)Công cụ phát sinh DataSet
Đây công cụ phát sinh DataSet tự động
(33)Tùy chỉnh form liệu
Các thông tin yêu cầu:
Tên DataSet
Connection sử dụng
Các Table View nào, cột
của chúng
Cách hiển thị liệu
(34)(35)Gắn liệu WinForms
Cách gắn đơn giản
Cách gắn phức tạp
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")
(36)Gắn liệu WebForms
Gắn liệu đọc
Dim sqlComm As New SqlClient.SqlCommand("Select“ &_
“ * from authors", sqlconn)
Dim sqlReader As SqlClient.SqlDataReader sqlReader = sqlComm.ExecuteReader
(37)7.Tích hợp XML
Tại phải dùng schemas (giản đồ)?
Miêu tả cấu trúc XML
Tạo Schemas
Sử dụng XML Schemas
ADO.Net
(38)Tại phải dùng Schemas
Định nghĩa định dạng liệu
Sử dụng để kiểm tra tính hợp lệ
Có lợi qua việc định nghĩa
kiểu tài liệu (document type definitions - DTSs )
Cú pháp XML
Sử dụng lại kiểu
(39)Miêu tả cấu trúc XML
Schemas miêu tả gồm:
Các phần tử tài liệu (E)
Các thuộc tính tính tài liệu (A)
Các quan hệ phần tử thuộc tính
(R)
Các kiểu liệu
Thứ tự phần tử
(40)Ví dụ tài liệu XML
(41)Ví dụ Tài liệu liên kết schema để miêu tả cấu trúc
<xsd:schema id="pubs“ targetNamespace="http://tempuri.org/Publishers.xsd" xmlns="http://tempuri.org/Publishers.xsd“
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata“ attributeFormDefault="qualified“ elementFormDefault="qualified">
<xsd:element name="pubs" msdata:IsDataSet="true“ msdata:EnforceConstraints="False"> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:element name="Publishers">
<xsd:complexType> <xsd:sequence>
<xsd:element name="pub_id“ type="xsd:string" minOccurs="0" /> <xsd:element name="pub_name“ type="xsd:string" minOccurs="0" /> <xsd:element name="city“ type="xsd:string" minOccurs="0" />
(42)Tạo Schemas
Tạo Schemas từ tài liệu XML
tồn tại.
Tạo Schemas từ Databases
Làm việc với Schemas
Kiểm tra tài liệu XML dựa vào
(43)Dùng liệu XML schemas trong ADO.Net
Nạp liệu XML vào DataSet
Sử dụng kiểu DataSet định
nghĩa
Tăng hiệu
Đơn giản việc coding
Dim datXML As DataSet = New DataSet() datXML.ReadXml("c:\publishers.xml")
MessageBox.Show(datXML.Tables(0).Rows(0)(0).ToString)
(44)(45)