You are on page 1of 53

Tng quan m hnh truy xut CSDL

ADO.NET

ThS. Trng Phc Hi

Ni dung

1. Cc m hnh truy xut CSDL 2. Gii thiu ADO.Net 3. Tng quan kin trc ADO.Net 4. Kt ni CSDL bng ADO.Net

Trng Phc Hi

ng dng qun l thng tin


Ni no c lu tr thng tin, ni cn qun l thng tin. Qun l gio dc, qun l bnh vin, qun l bn hng, qun l nhn s, tin lng

Lp trnh qun l nng cao

Trng Phc Hi

ng dng qun l thng tin Truy xut thng tin t CSDL: ngha ca CSDL Cu trc cc bng d liu Lc CSDL

developer

Lp trnh qun l nng cao

Trng Phc Hi

M hnh ng dng client/server


GUI

Presentation layer (client)


Application

Web Server Web

Business layer

Data layer (server)


Lp trnh qun l nng cao

Database

Trng Phc Hi

M hnh ng dng client/server


GUI
Web Server

GUI
Web Server

GUI
Web Server

Application

Web

Application

Web

Application

Web

Database
Lp trnh qun l nng cao

6
Trng Phc Hi

Cc m hnh truy xut CSDL


ODBC (Open Database Connectivity) OLE DB (Obj. Linking & Embedding DB) DAO (Data Access Object) RDO (Remote Data Object) ADO (ActiveX Data Objects) ADO.Net

Lp trnh qun l nng cao

Trng Phc Hi

Ni dung

1. Cc m hnh truy xut CSDL 2. Gii thiu ADO.Net 3. Tng quan kin trc ADO.Net 4. Kt ni CSDL bng ADO.Net

Trng Phc Hi

ADO.Net
M hnh truy xut CSDL trn nn .NET. Tng tc truy xut d liu theo m hnh a lp (n-tier): tch bit truy cp d liu vi thao tc d liu. Cho php truy xut d liu ch connected v disconnected. H tr thao tc vi XML. Gm 2 thnh phn chnh: .Net Data Provider v DataSet.

Lp trnh qun l nng cao

Trng Phc Hi

Ni dung

1. Cc m hnh truy xut CSDL 2. Gii thiu ADO.Net 3. Tng quan kin trc ADO.Net 4. Kt ni CSDL bng ADO.Net

10

Trng Phc Hi

Tng quan kin trc ADO.Net


ADO.NET .NET Data Providers

Data Consumers

DataReader WinForm

Connection

Command

WebForm Other DataSet

DataAdapter

Database
Lp trnh qun l nng cao

XML

11

Trng Phc Hi

.Net Data Provider


Phn loi .Net Data Provider:
ODBC

ODBC Data Provider System.Data.Odbc


OLE DB Data Provider System.Data.OleDb SQL Server Data Provider System.Data.SqlClient Oracle Data Provider System.Data.OracleClient
12
Trng Phc Hi

OLE DB

SQL

ORACLE
Lp trnh qun l nng cao

.Net Data Provider


Gm 4 thnh phn: Connection: thc hin thit lp v duy tr kt ni n CSDL. Command: lu tr cc lnh truy vn hay stored procedure. DataReader: lu tr kt qu thc thi lnh truy vn t CSDL. DataAdapter: l cu ni gip trao i d liu gia DataSet v CSDL.

Lp trnh qun l nng cao

13

Trng Phc Hi

DataSet
Lu tr b nh trong (in-memory) cc bng d liu, cc lc CSDL. Thc thi c ch ngt kt ni (disconnected) nhm tng hiu nng truy xut CSDL. Mi thao tc thay i d liu c thc hin trn DataSet, khng nh hng n CSDL. S dng XML truyn ti v lu tr d liu. Theo vt cc thay i d liu, cp nht CSDL thng qua i tng DataAdapter.

Lp trnh qun l nng cao

14

Trng Phc Hi

S lp i tng DataSet
DataSet

Tables

DataTable Columns DataColumn

Rows

DataRow

Relations

DataRelation

Lp trnh qun l nng cao

15

Trng Phc Hi

Ni dung

1. Cc m hnh truy xut CSDL 2. Gii thiu ADO.Net 3. Tng quan kin trc ADO.Net 4. Kt ni CSDL bng ADO.Net

16

Trng Phc Hi

Kt ni database server
Bc 1: khi to i tng Connection vi tham s connection string i vi database tng ng.
m_Connection = new SqlConnection(ConStr)

Bc 2: thit lp kt ni n database bng phng thc Open.


m_Connection.Open()

Bc 3: thc hin cc thao tc khai thc d liu (select, insert, delete, update) t database. Bc 4: ng kt ni n database bng phng thc Close.
m_Connection.Close()

Lp trnh qun l nng cao

17

Trng Phc Hi

Kt ni database server

Lp trnh qun l nng cao

18

Trng Phc Hi

Kt ni database server
Imports System.Data.SqlClient Public Class FrmLogin Private m_Conn As SqlConnection

Kt ni CSDL SQL Server bng SqlClient

Private Sub cmdLogin_Click(...) Try Dim ConStr As String = Server = & sSrv & ; & _ User ID = & sUser & ; & _ Password = & sPass & ; & _ Database = & sDatabase & ; m_Conn = New SqlConnection(ConStr) m_Conn.Open() MessageBox.Show(Kt ni thnh cng, Successful) m_Conn.Close() Catch ex As Exception MessageBox.Show(ex.Message, Failed) End Try End Sub End Class
Lp trnh qun l nng cao

19

Trng Phc Hi

Kt ni CSDL bng Wizard

To control DataGrid

Lp trnh qun l nng cao

20

Trng Phc Hi

Kt ni CSDL bng Wizard


Thm DataGrid control vo thanh cng c

Lp trnh qun l nng cao

21

Trng Phc Hi

Kt ni CSDL bng Wizard


Chn loi DataGrid cho ng dng Windows Form

Lp trnh qun l nng cao

22

Trng Phc Hi

Kt ni CSDL bng Wizard


To kt ni CSDL bng cng c wizard.

Thit lp DataSource cho DataGrid

connection string

to mi connection

Lp trnh qun l nng cao

23

Trng Phc Hi

Kt ni CSDL bng Wizard


Chn thuc tnh ca bng cn hin th trong DataGrid

chn d liu cn truy vn


Lp trnh qun l nng cao

DataGrid c thit lp datasource


24
Trng Phc Hi

Kt ni CSDL bng Wizard


Kt qu thc thi chng trnh

Lp trnh qun l nng cao

25

Trng Phc Hi

Truy xut CSDL bng VB.Net


To Form gm DataGrid v cc nt lnh

To control DataGrid

Vit code cho button Load Data


Lp trnh qun l nng cao

26

Trng Phc Hi

Truy xut CSDL bng VB.Net


Bind d liu t DataSet vo DataGrid:
Bc 1: khi to i tng DataAdapter v thc thi truy vn.
m_Adapter = New SqlDataAdapter(m_Command)

Bc 2: khi to i tng DataSet.


m_DataSet = New DataSet()

Bc 3: np kt qu truy vn v t tn cho bng d liu cha trong DataSet thng qua phng thc Fill.
m_Adapter.Fill(m_DataSet, strName)

Bc 4: bind d liu t DataSet vo DataGird bng phng thc SetDataBinding.


m_Grid.SetDataBinding(m_DataSet, strName)
Lp trnh qun l nng cao

27

Trng Phc Hi

Truy xut CSDL bng VB.Net


Kt ni SQL Server bng lp SqlClient Khai bo cc bin thnh vin
Imports System.Data Imports System.Data.SqlClient Public Class FrmDemo Private m_Conn As SqlConnection Private m_Cmd As SqlCommand Private m_Adap As SqlDataAdapter Private m_DataSet As DataSet ... End Class

Lp trnh qun l nng cao

28

Trng Phc Hi

Truy xut CSDL bng VB.Net


Kt ni SQL Server bng lp SqlClient Xy dng hm kt ni CSDL:Hm tr v True nu kt ni thnh cng, ngc li tr v False
Private Function Connect(ByVal ConStr As String) As Boolean Try m_Conn = New SqlConnection(ConStr) m_Conn.Open() Catch Return False End Try Return True End Function

Lp trnh qun l nng cao

29

Trng Phc Hi

Truy xut CSDL bng VB.Net


Kt ni SQL Server bng lp SqlClient Xy dng hm thc thi truy vn: tham s l cu lnh truy vn. Kt qu tr v i tng DataAdapter.
Private Function Excute(ByVal sCmd As String) As SqlDataAdapter m_Cmd = New SqlCommand(sCmd, m_Conn) Return New SqlDataAdapter(m_Cmd) End Function

Lp trnh qun l nng cao

30

Trng Phc Hi

Truy xut CSDL bng VB.Net


Kt ni SQL Server bng lp SqlClient Vit hm a d liu t DataSet ln DataGrid
Private Sub ShowData( ByVal ByRef ByRef ByVal Adap As SqlDataAdapter, DataSet As DataSet, DataGrid As DataGrid, sName As String)

Adap.Fill(DataSet, sName) DataGrid.SetDataBinding(DataSet, sName) End Sub

Lp trnh qun l nng cao

31

Trng Phc Hi

Truy xut CSDL bng VB.Net


Kt ni SQL Server bng lp SqlClient Vit code cho nt lnh LoadData
Public Class FrmDemo Private Sub cmdLoadData_Click(...) Dim ConStr As String = Server=localhost;User ID=sa; Password =sa;Database=QLSach; If (Connect(ConStr) = True) Then m_Adap = Excute(Select MaSach, TuaSach, TacGia, GiaBan, From Sach) ShowData(m_Adap, m_DataSet, dgSach, DMSach) m_Conn.Close() Else MessageBox.Show(Kt Ni CSDL Tht Bi) End If End Sub End Class
Lp trnh qun l nng cao

32

Trng Phc Hi

Truy xut CSDL bng VB.Net


i tng Connection cn phi c ng Close v hy Dispose trc khi kt thc chng trnh gii phng ti nguyn.
Private Sub FrmDemo_Closing(...) m_Conn.Dispose() End Sub

Lp trnh qun l nng cao

33

Trng Phc Hi

Truy xut CSDL bng VB.Net


Kt qu hin th:

Load d liu ln DataGrid

Lp trnh qun l nng cao

34

Trng Phc Hi

Truy xut CSDL bng VB.Net


Cc bc kt ni v khai thc CSDL cc .Net Data Provider khc nhau u tng t nhau. Kiu d liu cc bin thnh phn.Net Data Provider khc nhau c khai bo khc nhau. Cc .Net Data Provider khc nhau s dng connection string khc.

Lp trnh qun l nng cao

35

Trng Phc Hi

Truy xut CSDL bng VB.Net


Kt ni SQL Server bng lp OleDb Khai bo cc bin thnh vin
Imports System.Data Imports System.Data.OleDb Public Class FrmDemo Private m_Conn As OleDbConnection Private m_Cmd As OleDbCommand Private m_Adap As OleDbDataAdapter Private m_DataSet As DataSet ... End Class

Lp trnh qun l nng cao

36

Trng Phc Hi

Truy xut CSDL bng VB.Net


Kt ni SQL Server bng lp OleDb
Public Class FrmDemo Private Sub cmdLoadData_Click(...) Dim ConStr As String = Provider=SQLOLEDB; Data Source=localhost;User ID=sa; Password =sa;Initial Catalog=QLSach; If (Connect(ConStr) = True) Then m_Adap = Excute(Select MaSach, TuaSach, TacGia, GiaBan, From Sach) ShowData(m_Adap, m_DataSet, dgSach, DMSach) m_Conn.Close() Else MessageBox.Show(Kt Ni CSDL Tht Bi) End If End Sub End Class
Lp trnh qun l nng cao

37

Trng Phc Hi

Truy xut CSDL bng VB.Net


Kt ni Access bng lp OleDb
Public Class FrmDemo Private Sub cmdLoadData_Click(...) Dim ConStr As String = Data Source=QLSach.MDB; Provider=Microsoft.Jet.OLEDB.4.0; If (Connect(ConStr) = True) Then m_Adap = Excute(Select MaSach, TuaSach, TacGia, GiaBan, From Sach) ShowData(m_Adap, m_DataSet, dgSach, DMSach) m_Conn.Close() Else MessageBox.Show(Kt Ni CSDL Tht Bi) End If End Sub End Class
Lp trnh qun l nng cao

38

Trng Phc Hi

Truy vn Stored Procedure


Cch thc tng t nh vi cu lnh truy vn T-SQL. Thay cu lnh truy vn bng tn stored procedure c xy dng sn. Truyn tham s l cc gi tr nhn t mn hnh giao din cho stored procedure.

Lp trnh qun l nng cao

39

Trng Phc Hi

Truy vn Stored Procedure

To stored procedure tm kim vi 2 tham s

Lp trnh qun l nng cao

40

Trng Phc Hi

Truy vn Stored Procedure


Xy dng stored procedure tm kim sch da trn 2 tiu ch ta v tn NXB
CREATE PROC usp_TimKiem @TuaSach nvarchar(200), @TenNXB nvarchar(200) AS BEGIN SELECT S.MaSach, S.TuaSach, S.TacGia, N.TenNXB, S.GiaBan FROM Sach S INNER JOIN NhaXB N ON S.MaNXB = N.MaNXB WHERE S.TuaSach like N% + @TuaSach + % AND N.TenNXB = @TenNXB END GO

Lp trnh qun l nng cao

41

Trng Phc Hi

Truy vn Stored Procedure


Vit m cho nt lnh tm kim Truyn tn stored procedure
m_Cmd.CommandType = CommandType.StoredProcedure m_Cmd.CommandText = usp_TimKiem

Truyn tham s cho stored procedure


m_Cmd.Parameters.Clear()hy tt c tham s ang c Dim pa As SqlParameter = New SqlParameter() pa = GetParam("@TuaSach", SqlDbType.NVarChar, sTua) m_Cmd.Parameters.Add(pa) pa = GetParam("@TenNXB", SqlDbType.NVarChar, sNXB) m_Cmd.Parameters.Add(pa)
Lp trnh qun l nng cao

42

Trng Phc Hi

Truy vn Stored Procedure


Hm GetParam:
Private Function GetParam( ByVal Name As String, ByVal Type As SqlDbType, ByVal Value As Object) As SqlParameter Dim param As SqlParameter = New SqlParameter() param.ParameterName = Name tn tham s param.SqlDbType = Type ch nh kiu d liu param.Value = Value gn gi tr cho tham s

Return param End Function

Lp trnh qun l nng cao

43

Trng Phc Hi

Truy vn Stored Procedure


a d liu va truy vn c hin th trn DataGrid:
m_Adap = New SqlDataAdapter(m_Cmd) hy tt c bng d liu ang c trong DataSet m_DataSet.Clear() m_Adap.Fill(m_DataSet, KQTimKiem) dgKQTimKiem.SetDataBinding(m_DataSet, KQTimKiem)

Lp trnh qun l nng cao

44

Trng Phc Hi

Truy vn Stored Procedure


Kt qu chy chng trnh

Kt qu tm kim theo 2 tiu ch

Lp trnh qun l nng cao

45

Trng Phc Hi

Duyt d liu bng DataReader


Khi ch mun duyt trn ton b d liu th DataReader tt hn DataSet. a d liu t DataReader vo DataGrid: Bc 1: to DataTable c cc ct ng vi cc ct ca lnh truy vn.
Dim Table As DataTable = New DataTable(strTabName) DataTable.Columns.Add(New DataColumn(Ct 0) DataTable.Columns.Add(New DataColumn(Ct 1) ... DataTable.Columns.Add(New DataColumn(Ct n)

Lp trnh qun l nng cao

46

Trng Phc Hi

Duyt d liu bng DataReader


Bc 2: a DataTable va to vo DataSet.
m_DataSet.Tables.Add(Table)

Bc 3: bind DataSet vo DataGrid.


DataGrid.SetDataBinding(m_DataSet, strTabName)

Lp trnh qun l nng cao

47

Trng Phc Hi

Duyt d liu bng DataReader


Bc 4: duyt x l tng dng d liu c c t DataReader bng phng thc Read v a vo DataSet.
While m_Reader.Read() ... m_DataSet.Tables(0).Rows.Add(New Object() _ { _ m_Reader.GetValue(0).ToString(), _ m_Reader.GetValue(1).ToString(), _ ... m_Reader.GetValue(n).ToString() }) ... End While
Lp trnh qun l nng cao

48

Trng Phc Hi

Duyt d liu bng DataReader


V d minh ha tm kim sch: Xy dng hm to bng
Private Sub CreateTable(ByRef Grid As DataGrid, ByRef sName As String) Dim Table As DataTable = New DataTable(sName) Table.Columns.Add(New Table.Columns.Add(New Table.Columns.Add(New Table.Columns.Add(New DataColumn(STT)) DataColumn(MaSach)) DataColumn(TuaSach)) DataColumn(TacGia))

m_DataSet.Tables.Add(Table) Grid.SetDataBinding(m_DataSet, sName) End Sub

Lp trnh qun l nng cao

49

Trng Phc Hi

Duyt d liu bng DataReader


V d minh ha tm kim sch: Vit hm a d liu t DataReader ln Grid
Private Sub ShowData(ByRef Grid As DataGrid) m_Reader = m_Cmd.ExecuteReader() thc thi truy vn CreateTable(Grid, KQTimKiem) Dim i As Integer = 0 While m_Reader.Read() i += 1 m_DataSet.Tables(0).Rows.Add(New Object(){ i.ToString(), m_Reader.GetString(0), m_Reader.GetString(1), m_Reader.GetString(2)}) End While m_Reader.Close() End Sub
Lp trnh qun l nng cao

50

Trng Phc Hi

Cp nht c s d liu
D liu thay i trong DataSet thng qua i tng DataAdapter cp nht CSDL. S dng i tng CommandBuilder to lnh cp nht CSDL.
'ti lp kt ni n CSDL m_Connection.Open()

'thay i gi tr trong dataset m_Dataset.Tables(0).Rows(0)(2) = "Trng Phc Hi 'dng CommandBuilder to lnh cp nht m_CmdBuilder = New SqlCommandBuilder(m_Adapter)
'cp nht s thay i d liu trong DataTable n CSDL m_Adapter.Update(m_Dataset, "Sach") m_Connection.Close()
Lp trnh qun l nng cao

51

Trng Phc Hi

Giao tip XML


Tch hp kh nng h tr XML l c tnh ni bt nht ca ADO.Net. XML l nh dng c dng xut bn v chuyn d liu ca DataSet.
'Lu Dataset thnh tp tin XML m_Dataset.WriteXML("books.xml")

'Np d liu t XML vo Dataset m_Dataset.Clear() 'Xa d liu c m_Dataset.ReadXML("books.xml")

Lp trnh qun l nng cao

52

Trng Phc Hi

Giao tip XML


nh dng tp tin XML
<?xml version="1.0" standalone="yes"?> <NewDataSet> <Sach> <MaSach>0435011</MaSach> <TuaSach>Ting Chung</TuaSach> <TacGia>V Hng</TacGia> <GiaGoc>10000</GiaGoc> <GiaBan>8000</GiaBan> <SoLuongTon>5</SoLuongTon> </Sach> <Sach> ... </Sach> </NewDataSet>
Lp trnh qun l nng cao

53!

Trng Phc Hi

You might also like