Chuong 8: S? d?ng ADO .Net - PowerPoint PPT Presentation

About This Presentation
Title:

Chuong 8: S? d?ng ADO .Net

Description:

The following example shows how to use the DataSource ... ActiveX Data Objects for ... of the database None User ID SQL Server logon account (if using SQL ... – PowerPoint PPT presentation

Number of Views:190
Avg rating:3.0/5.0
Slides: 46
Provided by: PhanTro
Category:
Tags: ado | chuong | datasource | net | using

less

Transcript and Presenter's Notes

Title: Chuong 8: S? d?ng ADO .Net


1
Chuong 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
  • Office phone 8276346, Ext 132
  • Emailphantien84_at_gmail.com

2
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 tu?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

3
M?c dích c?a chuong
  • Chuong này cung c?p sinh viên ki?n th?c c?n thi?t
    d? tao các ?ng d?ng m?c cao truy c?p d? li?u dùng
    VB.Net
  • Sau bài này sinh viên có th?
  • Li?t kê các l?i ích ADO .Net
  • T?o các ?ng d?ng dùng ADO .Net
  • Li?t kê các thành ph?n chính c?a d?i tu?ng
    ADO.Net và các ch?c nang c?a nó.
  • Dùng VS.Net d? thi?t k? và g?n k?t d? li?u
  • Gi?i thích cách tích h?p XML cùng ADO.Net

4
1. T?ng quan
  • B?n s? h?c cách s? d?ng ADO .Net
  • Cách s? d?ng d?i tu?ng DataSet
  • 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.
  • Cu?i cùng b?n s? h?c cách tích h?p XML vào ADO
    .Net

5
2. T?ng quan ADO .Net
  • Gi?i thi?u ADO .Net
  • Các l?i ích ADO .Net

6
Gi?i thi?u ADO .Net
7
Gi?i thi?u ADO.Net
  • ADO.Net là m?t t?p các l?p cho phép các ?ng d?ng
    .Net d?c và c?p nh?t thông tin DB và các noi luu
    tr? d? li?u khác. Namespace System.Data
  • ADO.Net cung c?p d?ng nh?t cách truy c?p các
    ngu?n d? li?u khác nhau nhu SQL Server, OLE DB,
    các ngu?n d? li?u không quan h? nhu MS Exchange,
    và các tài li?u XML
  • ADO.Net c?i ti?n kh? nang disconnect t?i d? li?u.

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 d?c, c?p
    nh?t, thêm m?i và xóa d? li?u. Nhi?u d?i tu?ng
    trong thu vi?n là tuong t? nhau và du?c nh?n di?n
    qua tên ti?n t? c?a chúng ví d? nhu SqlDataReader
    và OleDbDataReader c? hai d?u cung c?p d?c các
    b?n ghi t? ngu?n d? li?u.

9
Các l?i ích c?a ADO.Net
  • Tuong t? nhu ADO
  • Ðu?c thi?t k? cho d? li?u không k?t n?i.
  • N?m trong n?i t?i .Net Framework nên r? dàng
    trong vi?c s? d?ng ngôn ng? d? phát tri?n.
  • H? tr? XML
  • ADO và XML có tru?c nhung không tuong thích
  • ADO d?a trên co s? d? li?u quan h?.
  • XML d?a trên co s? d? li?u phân c?p.
  • ADO.Net k?t h?p hai công ngh? này l?i v?i nhau.

10
3. .Net Data Provider
  • .Net Data Provider cho phép truy c?p các ngu?n d?
    li?u xác d?nh
  • System.Data.SqlClient dùng truy câp SQL Server
    7.0 tr? lên
  • System.Data.OleDbClient dùng truy c?p b?t k?
    ngu?n d? li?u nào h? tr? OLE DB
  • Dùng d?i tu?ng Connection
  • K?t n?i t?i m?t Database
  • Dùng d?i tu?ng Command
  • Th?c thi các câu l?nh
  • Dùng d?i tu?ng Command v?i các Stored Procedure
  • Dùng d?i tu?ng DataReader
  • T?o m?t lu?ng d? li?u ch? d?c
  • Dùng d?i tu?ng DataAdapter
  • d? thay d?i d? li?u ngu?n và m?t DataSet

11
Dùng d?i tu?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
  • Microsoft.Jet.OLEDB.4.0Data Sourcec\NWind.MDB"
  • conAccess.Open( )

12
Dùng d?i tu?ng Command
  • Có hai cách d? t?o d?i tu?ng Command
  • S? d?ng Contructor Command
  • S? d?ng phuong th?c CreateCommand
  • Có ba cách d? th?c thi m?t Command
  • ExecuteReader
  • ExecuteScalar
  • ExecuteNonQuery
  • ExecuteXMLReader

Dim commSQL As SqlClient.SqlCommand commSQL New
SqlClient.SqlCommand( ) commSQL.Connection
conSQL commSQL.CommandText "Select Count()
from Authors" MessageBox.Show(commSQL.ExecuteScala
r( ).ToString)
13
Dùng d?i tu?ng Command v?i các Stored Procedure
  • T?o m?t d?i tu?ng Command
  • Thi?t l?p CommandType là StoredProcedure
  • Dùng phuong th?c Add d? t?o và thi?t l?p các bi?n
    (Parameter)
  • Dùng thu?c tính ParameterDirection d? thi?t l?p
    ki?u bi?n
  • G?i phuong th?c ExecuteReader
  • Dùng các Record, r?i Close DataReader
  • Truy c?p Output và tr? v? các bi?n (Parameter)

14
Demo Dùng d?i tu?ng Command
  • T?o m?t Store trong SQL Server
  • CREATE PROCEDURE byroyalty _at_percentage int
  • AS
  • select au_id from titleauthor
  • where titleauthor.royaltyper _at_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
    localhostDataBase Pubs" _
  • UID saPWD sa"
  • conSQL.Open( )
  • Dim commSQL As SqlClient.SqlCommand New
    SqlCommand( )
  • commSQL.Connection conSQL
  • commSQL.CommandType CommandType.StoredProcedure
  • commSQL.CommandText "byroyalty"

15
Demo Dùng d?i tu?ng Command
  • Dim paramSQL As New SqlClient.sqlParameter( _
  • "_at_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

16
Dùng d?i tu?ng DataReader
  • Ð?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( )
  • L?y thông tin
  • Tr? v? nhi?u t?p h?p k?t qu?

17
Dùng d?i tu?ng DataAdapter
  • Ðu?c s? d?ng nhu m?t liên k?t gi?a DataSource và
    Các Table luu 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")

18
4. Demo L?y d? li?u dùng ADO .Net
  • B?n s? h?c cách l?y d? li?u t? CSDL SQL Server
    b?ng vi?c dùng d?i tu?ng SQLDataAdapter trong
    VB.Net.

19
5. Ð?i tu?ng DataSet
  • T?ng quan v? d? li?u không k?t n?i
  • Ð?i tu?ng DataSet
  • Cu trú d? li?u trong DataSet
  • S? d?ng Relationship trong DataSet
  • S? d?ng các Constraint
  • C?p nh?t d? li?u trong DataSet
  • C?p nh?t d? li?u t?i ngu?n

20
T?ng quan v? d? li?u không k?t n?i
21
T?ng quan v? d? li?u không k?t n?i
  • M?i công ngh? truy c?p d? li?u d?u dã du?c c?i
    thi?n khái niêm không k?t n?i, nhung d?n ADO.Net
    m?i cung c?p gi?i pháp cách d?y d?.
  • ADO.Net du?c thi?t k? dùng cho Internet
  • ADO.Net s? d?ng XML nhu là các d?nh d?ng truy?n
    t?i.
  • ADO.Net cung c?p m?t d?i tu?ng m?i cho vi?c
    caching d? li?u trên máy client. Ð?i tu?ng này là
    DataSet

22
Ð?i tu?ng DataSet
23
Cu trú d? li?u trong DataSet
  • Cu 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")
  • 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"))

24
S? d?ng Relationship trong 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 d? li?u quan h?
  • Dim PubRow, TitleRow As DataRow, TitleRows( ) As
    DataRow
  • PubRow datPubs.Tables("Publishers").Rows(0)
  • TitleRows PubRow.GetChildRows("PubsTitles")

25
S? d?ng các Constraint
  • T?o New Constraint
  • ForeignKeyConstraints dây là ràng bu?c di?u
    khi?n m?t hàng con khi hàng cha du?c update ho?c
    delete
  • UniqueConstraints dây là ràng bu?c d?m b?o các
    giá tr? trong m?t c?t ho?c các c?t là duy nh?t.
  • 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")

26
C?p nh?t d? li?u trong DataSet
  • Thêm Rows
  • Dim drNewRow As DataRow datPubs.Tables("Titles")
    .NewRow
  • 'Populate columns
  • datPubs.Tables("Titles").Rows.Add(drNewRow)
  • Thay d?i Rows
  • drChangeRow.BeginEdit( )
  • drChangeRow("Title") drChangeRow("Title").ToStri
    ng " 1"
  • drChangeRow.EndEdit( )
  • Xóa d? li?u
  • datPubs.Tables("Titles").Rows.Remove(drDelRow))

27
C?p nh?t d? li?u t?i ngu?n
  • Ch? rõ ràng các c?p nh?t
  • T? d?ng phát sinh update

Dim comm As comm.CommandText "Insert into
titles(" _ "title_id, title, type)
values(_at_t_id,_at_title,_at_type)" comm.Parameters.Add("_at_
t_id",SqlDbType.VarChar,6,"title_id") comm.Paramet
ers.Add("_at_title",SqlDbType.VarChar,80,"title") com
m.Parameters.Add("_at_type",SqlDbType.Char,12,"type")
adaptSQL.InsertCommand comm adaptSQL.Update(dat
Pubs, "titles")
Dim sqlCommBuild As New SqlCommandBuilder(adaptSQL
) adaptSQL.Update(datPubs, "titles") MsgBox(sqlCom
mBuild.GetInsertCommand.ToString)
28
Demo S? d?ng DataSet
29
6.Thi?t k? và g?n k?t d? li?u
  • Thi?t k? DataSet
  • Tùy ch?nh form d? li?u
  • G?n d? li?u trong WinForms
  • G?n d? li?u trong WebForms

30
Thi?t k? DataSet
  • Tùy ch?nh c?u hình DataAdapter
  • Phát sinh d?i tu?ng DataAdapter trong th? t?c
    InitializeComponent dùng trong code c?a b?n.
  • Công c? phát sinh DataSet
  • Phát sinh m?t DataSet trên co s? d? li?u dã t?n
    t?i m?t DataAdapter.

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 m?i
  • Ho?c Stored Procedure dã t?n t?i
  • Các chi ti?t l?a ch?n câu truy v?n

32
Công c? phát sinh DataSet
  • Ðây là công c? phát sinh DataSet t? d?ng t?
    DataAdapter

33
Tùy ch?nh form d? li?u
  • Các thông tin du?c yêu c?u
  • Tên c?a DataSet
  • Connection du?c s? d?ng
  • Các Table ho?c các View nào, và các c?t c?a
    chúng.
  • Cách hi?n th? d? li?u
  • Nh?ng button nào du?c t?o

34
Demo S? d?ng Form tùy ch?nh d? li?u
35
G?n d? li?u trong WinForms
  • Cách g?n don 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.DataBindi
ngs.Add("Text", _ ds.Tables("authors"),
"au_fname")
da New SqlClient.SqlDataAdapter("Select
au_lname, " _ "au_fname from authors",
sqlconn) da.Fill(ds, "authors") DataGrid1.DataSour
ce ds.Tables("authors")
36
G?n d? li?u trong WebForms
  • G?n d? li?u ch? d?c

Dim sqlComm As New SqlClient.SqlCommand("Select
_ from authors", sqlconn) Dim sqlReader As
SqlClient.SqlDataReader sqlReader
sqlComm.ExecuteReader DataGrid1.DataSource( )
sqlReader DataGrid1.DataBind( )
37
7.Tích h?p XML
  • T?i sao ph?i dùng schemas (gi?n d?)?
  • Miêu t? c?u trúc XML
  • T?o Schemas
  • S? d?ng XML và Schemas trong ADO.Net
  • DataSets và XmlDataDocuments

38
T?i sao ph?i dùng Schemas
  • Ð?nh nghia d?nh d?ng c?a d? li?u
  • S? d?ng d? ki?m tra tính h?p l?
  • Có l?i th? hon qua vi?c d?nh nghia các ki?u tài
    li?u (document type definitions - DTSs )
  • Cú pháp XML
  • S? d?ng l?i các ki?u
  • Nhóm m?t nhóm các ph?n t?

39
Miêu t? c?u trúc XML
  • Schemas có th? du?c miêu t? g?m
  • Các ph?n t? trong tài li?u (E)
  • Các thu?c tính tính trong tài li?u (A)
  • Các quan h? gi?a ph?n t? và thu?c tính (R)
  • Các ki?u d? li?u
  • Th? t? c?a các ph?n t?
  • Các ph?n t? nào là tùy ch?n

40
Ví d? m?t tài li?u XML
  • lt?xml version"1.0" ?gt
  • ltpubsgt
  • ltPublishersgt
  • ltpub_idgt0736lt/pub_idgt
  • ltpub_namegtLucerne Publishinglt/pub_namegt
  • ltcitygtBostonlt/citygt
  • ltstategtMAlt/stategt
  • ltcountrygtUSAlt/countrygt
  • lt/Publishersgt
  • ltPublishersgt
  • ltpub_idgt0877lt/pub_idgt
  • ltpub_namegtLitware, Inc.lt/pub_namegt
  • ltcitygtWashingtonlt/citygt
  • ltstategtDClt/stategt
  • ltcountrygtUSAlt/countrygt
  • lt/Publishersgt
  • lt/pubsgt

41
Ví d? Tài li?u này liên k?t m?t schema d? miêu t?
c?u trúc
  • ltxsdschema id"pubs targetNamespace"http//temp
    uri.org/Publishers.xsd"
  • xmlns"http//tempuri.org/Publishers.xsd
    xmlnsxsd"http//www.w3.org/2001/XMLSchema"
  • xmlnsmsdata"urnschemas-microsoft-comxml-msdata
    attributeFormDefault"qualified
    elementFormDefault"qualified"gt
  • ltxsdelement name"pubs" msdataIsDataSet"true
    msdataEnforceConstraints"False"gt
  • ltxsdcomplexTypegt
  • ltxsdchoice maxOccurs"unbounded"gt
  • ltxsdelement name"Publishers"gt
  • ltxsdcomplexTypegt
  • ltxsdsequencegt
  • ltxsdelement name"pub_id type"xsdstring"
    minOccurs"0" /gt
  • ltxsdelement name"pub_name type"xsdstring"
    minOccurs"0" /gt
  • ltxsdelement name"city type"xsdstring"
    minOccurs"0" /gt
  • ltxsdelement name"state type"xsdstring"
    minOccurs"0" /gt
  • ltxsdelement name"country type"xsdstring"
    minOccurs"0"/gt
  • lt/xsdsequencegt
  • lt/xsdcomplexTypegt
  • lt/xsdelementgt
  • lt/xsdchoicegt
  • lt/xsdcomplexTypegt

42
T?o Schemas
  • T?o Schemas t? các tài li?u XML dã t?n t?i.
  • T?o Schemas t? Databases
  • Làm vi?c v?i Schemas
  • Ki?m tra các tài li?u XML d?a vào Schema

43
Dùng d? li?u XML và schemas trong ADO.Net
  • N?p d? li?u XML vào m?t DataSet
  • S? d?ng ki?u DataSet du?c d?nh nghia
  • Tang hi?u nang
  • Ðon gi?n trong vi?c coding

Dim datXML As DataSet New DataSet() datXML.ReadX
ml("c\publishers.xml") MessageBox.Show(datXML.Tab
les(0).Rows(0)(0).ToString)
MessageBox.Show(pubs.Publishers(0).pub_id)
44
DataSets và XmlDataDocuments
45
Demo S? d?ng XML Schema
Write a Comment
User Comments (0)
About PowerShow.com