Top Banner
1 1 1 T T ng Quan v ng Quan v ADO.NET ADO.NET
58

Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

Aug 30, 2018

Download

Documents

lenhu
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

1111

TTổổng Quan vng Quan vềề ADO.NETADO.NET

Page 2: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

2

NNNNNNNNộội Dungi Dungi Dungi Dungi Dungi Dungi Dungi Dung

�� ADO.NETADO.NET

� Quá trình phát triển

� Đặc điểm ADO.NET

� .NET Data Provider

� DataSet

� Data Source Configuration Wizard

Page 3: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

3

GiGiGiGiGiGiGiGiớới thii thii thii thii thii thii thii thiệệu ADO.NETu ADO.NETu ADO.NETu ADO.NETu ADO.NETu ADO.NETu ADO.NETu ADO.NET

�� AActiveX DData OObject .NET (ADO.NET)

� Công nghệ của MS trên .NET Framework

� Phát triển từ nền tảng ADO

� Cung cấp các lớp đối tượng và hàm thư viện phục vụ cho việc kết nối và xử lý dữ liệu

.NET Application.NET Application

ADO.NETADO.NET

Page 4: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

4

GiGiGiGiGiGiGiGiớới thii thii thii thii thii thii thii thiệệu ADO.NETu ADO.NETu ADO.NETu ADO.NETu ADO.NETu ADO.NETu ADO.NETu ADO.NET

� Mô hình .NET Framework

Microsoft .NET Framework

Common Language Runtime

Base Classes

Web Services User Interface

Data and XML

ADO.NETADO.NET XML ... ...

Page 5: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

5

NNNNNNNNộội Dungi Dungi Dungi Dungi Dungi Dungi Dungi Dung

� ADO.NET

�� QuQuáá trtrìình phnh pháát trit triểểnn

� Đặc điểm ADO.NET

� .NET Data Provider

� DataSet

� Data Source Configuration Wizard

Page 6: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

6

QuQuáá trtrìình phnh pháát trit triểểnn

� Native API

� ODBC

Application

Database

DB API

Application

ODBC

DriverDriver

DriverDriver

DriverDriver

Database

ODBC API

DB API

Page 7: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

7

ADO

OLE DB

QuQuáá trtrìình phnh pháát trit triểểnn

� ADO, OLE DB

Application

ODBC

DriverDriver

DriverDriver

DriverDriver

ProviderProvider

ProviderProvider

ProviderProvider

ProviderProvider

Relational Data

Non-Relational Data

OLE: Object Linking and EmbeddingOLE: Object Linking and Embedding

Page 8: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

8

QuQuáá trtrìình phnh pháát trit triểểnn

ADO.NETADO.NET

Page 9: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

9

NNNNNNNNộội Dungi Dungi Dungi Dungi Dungi Dungi Dungi Dung

� ADO.NET

� Quá trình phát triển

�� ĐĐặặc đic điểểm ADO.NETm ADO.NET

� .NET Data Provider

� DataSet

� Data Source Configuration Wizard

Page 10: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

10

ADO.NETADO.NETADO.NETADO.NETADO.NETADO.NETADO.NETADO.NET

� ADO.NET là một phần của .NET Framework

� Thư viện lớp có chức năng thao tthao táác dc dữữ liliệệuu trong ngôn ngữ MS.NET

� ADO.NET là dạng “DisconnectedDisconnected”

� Cho phép lấy cả một cấu trúc phức tạp của DL từ CSDL, sau đó ngắt kết nối rồi mới thực hiện thao tác xử lý!

� ADO luôn phải duy trì kết nối trong suốt quá trình làm việc.

Page 11: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

11

Môi trMôi trMôi trMôi trưMôi trMôi trMôi trMôi trườờng ng ng ng ng ng ng ng ““connectedconnectedconnectedconnectedconnectedconnectedconnectedconnected””

� Mỗi user có một kết nối cố định tới data source

� Ưu điểm

� Môi trường được bảo vệ tốt

� Kiểm soát được sự đồng bộ

� Dữ liệu luôn được mới

� Nhược

� Phải có một kết nối mạng cố định

� Scalability

Page 12: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

12

Môi trMôi trMôi trMôi trưMôi trMôi trMôi trMôi trườờng ng ng ng ng ng ng ng ““disconnecteddisconnecteddisconnecteddisconnecteddisconnecteddisconnecteddisconnecteddisconnected””

� Một tập con của dữ liệu trung tâm được sao chép và bổ sung độc lập, sau đó sẽ được merge lại vào dữ liệu trung tâm.

� Ưu điểm

� Có thể làm việc bất cứ lúc nào, cũng như có thể kết nối bất kỳ vào Data Source

� Cho phép user khác có thể kết nối

� Nâng cao hiệu suất thực hiện của ứng dụng

� Khuyết

� Dữ liệu không được cập nhật một cách nhanh nhất

� Sự tranh chấp có thể xuất hiện và phải giải quyết

Page 13: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

13

ADO.NETADO.NETADO.NETADO.NETADO.NETADO.NETADO.NETADO.NET

� ADO.NET mạnh mẽ� Kế thừa các ưu điểm của ADO

� Kết hợp với ý tưởng thiết kế hoàn toàn mới

� Đặc điểm nổi bật

� Thiết kế hoàn toàn dựa vào XML

� Chuẩn giao tiếp dữ liệu phổ biến nhất trên môi trường Internet hiện nay

� Thiết kế hoàn toàn hướng đối tượng

� Đặc trưng của thư viện .NET Framework

Page 14: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

14

ADO.NET vs. ADOADO.NET vs. ADOADO.NET vs. ADOADO.NET vs. ADOADO.NET vs. ADOADO.NET vs. ADOADO.NET vs. ADOADO.NET vs. ADO

ĐĐặặc Đic Điểểmm ADOADO ADO.NETADO.NET

Data xử lý được

đưa vào bộ nhớ dưới dạng

Recordset : tương đương 1 bảng

dữ liệu trong database

Dataset : tương đương 1 database

Duyệt dữ liệu Recordset chỉ cho phép duyệt tuần

tự, từng dòng một.

Dataset : duyệt “tự do, ngẫu

nhiên”, truy cập thẳng tới bảng,

dòng, cột mong muốn.

Dữ liệu ngắt kết nối

Recordset thiên về hướng kết nối,

nên việc hỗ trợ ngắt kết nối không

mạnh

Dataset hỗ trợ hoàn toàn ngắt kết nối

Trao đổi dữ liệu

qua Internet

Khả năng trao đổi dữ liệu ADO

qua Internet thường có nhiều hạn

chế. Do dùng chuẩn COM

ADO.NET trao đổi dữ liệu qua

Internet rất dễ dàng vì ADO.NET được thiết kế theo chuẩn XML, là

chuẩn dữ liệu chính được sử dụng

để trao đổi trên Internet.

Page 15: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

15

ADO.NETADO.NETADO.NETADO.NETADO.NETADO.NETADO.NETADO.NET

� Kiến trúc của ADO.NET gồm 2 phần chính

�� PhPhầần kn kếết nt nốốii: sử dụng khi kết nối CSDL và thao tác dữ liệu, phải thực hiện kết nối khi thao tác

�� ConnectionConnection: quản lý việc đóng mở DB

� ???Connection: SqlConnection, OleDbConnection

�� CommandCommand: lệnh truy vấn, tương tác dữ liệu khi đang lập kết nối

� ???Command: SqlCommand, OleDbCommand

�� DataReaderDataReader: đọc dữ liệu, chỉ xử lý 1 dòng dữ liệu tại một thời điểm

� ???DataReader: SqlDataReader, OleDbDataReader

�� DataAdapterDataAdapter: cầu nối giữa DB và DataSet

Page 16: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

16

ADO.NETADO.NETADO.NETADO.NETADO.NETADO.NETADO.NETADO.NET

�� PhPhầần ngn ngắắt kt kếết nt nốốii: là DataSetDataSet

� DataSet không quan tâm đến DB thuộc kiểu gì, vàlấy dữ liệu từ DataAdapter để xử lý

� DataSet xem như một DB trong bộ nhớ: bảng, quan hệ…

� DataSet có các thành phần con như� DataTable

� DataRow

� DataColumn

� DataRelation

� Các đối tượng nhóm: DataTableCollection, DataRowCollection, DataColumnCollection

Page 17: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

17

Mô hMô hMô hMô hMô hMô hMô hMô hìình đnh đnh đnh đnh đnh đnh đnh đốối ti ti ti tưi ti ti ti tượợng ADO.NETng ADO.NETng ADO.NETng ADO.NETng ADO.NETng ADO.NETng ADO.NETng ADO.NET

Page 18: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

18

CCCCCCCCáác lc lc lc lc lc lc lc lớớp thp thp thp thư vi vi vi vip thp thp thp thư vi vi vi việện ADO.NETn ADO.NETn ADO.NETn ADO.NETn ADO.NETn ADO.NETn ADO.NETn ADO.NET

� System.Data.OleDb: Access, SQL Server, Oracle

� System.Data.SqlClient: SQL Server

� System.Data.OracleClient: Oracle

� Đặc điểm:

� Cả ba thư viện trên về giao tiếp lập trình là giống nhau

� Dùng thư viện SqlClient truy xuất SQL Server nhanh hơn OleDb

� Tương tự cho OracleClient

Page 19: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

19

NNNNNNNNộội Dungi Dungi Dungi Dungi Dungi Dungi Dungi Dung

� ADO.NET

� Quá trình phát triển

� Đặc điểm ADO.NET

� .NET Data ProviderNET Data Provider

� DataSet

� Data Source Configuration Wizard

Page 20: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

20

NET Data ProviderNET Data ProviderNET Data ProviderNET Data ProviderNET Data ProviderNET Data ProviderNET Data ProviderNET Data Provider

� Mô hình .NET Data Provider

Page 21: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

21

NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider -------- ConnectionConnectionConnectionConnectionConnectionConnectionConnectionConnection

Application Database

Connection

Thuộc tính & Phương thức

• ConnectionString: chuỗi kết nối DataSource

• Open(): thiết lập kết nối đến DS

• Close(): đóng kết nối với DS

Page 22: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

22

NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider -------- ConnectionConnectionConnectionConnectionConnectionConnectionConnectionConnection

� Mô tả CSDL sử dụng minh họa

Đặc điểm Thông tin

DBMS MS SQL Server Express 2005

DB 1 CSDL StudentDB

DB 2 CSDL Northwind

Page 23: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

23

NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider -------- ConnectionConnectionConnectionConnectionConnectionConnectionConnectionConnection

SqlConnection cnn = new SqlConnection();

cnn.ConnectionString = “server= .\\SQLEXPRESS;

database=Northwind; Trusted_Connection=true”;

cnn.Open();

//xử lý trong quá trình kết nối

cnn.Close();

SQL Connection

Thay bằng “localhost”

trong SQL Server 2005

Page 24: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

24

NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider -------- ConnectionConnectionConnectionConnectionConnectionConnectionConnectionConnection

ODBC/OLE DB Connection (*)Database

MS Access Driver = {Microsoft Access Driver (*.mdb)};

DBQ = <đường dẫn file access>

Provider=Microsoft.Jet.OLEDB.4.0; Data Source

= <đường dẫn file access>

SQL ServerDriver = {SQLServer}; Server = ServerName;

Database= DatabaseName; Uid=Username;

Pwd=Password;

Provider= SQLOLEDB; Data Source=ServerName;

Initial Catalog=DatabaseName; UserId=Username;

Password=Password

(*): Xem thêm chuỗi kết nối trong: http://www.connectionstrings.com/?carrier=sqlserver2005

Page 25: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

25

NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider -------- ConnectionConnectionConnectionConnectionConnectionConnectionConnectionConnection

OleDbConnection cnn = new OleDbSqlConnection();

cnn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;

Data Source =Sinhvien.mdb”;

cnn.Open();

//xử lý trong quá trình kết nối

cnn.Close();

OLEDB Connection

Page 26: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

26

NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider -------- CommandCommandCommandCommandCommandCommandCommandCommand

Application Database

Connection

Command

Thuộc tính & Phương thức

• Connection: kết nối để thực hiện lệnh

• CommandText: câu lệnh cần thực hiện• CommandType: loại câu lệnh (Text,TableDirect, StoredProc)

• ExecuteScalar(): thực hiện câu lệnh và trả về giá trị đơn• ExecuteNonQuery(): gọi các lệnh SQL, store, trả về số row bịtác động (Insert, Update, Delete…)

• ExecuteReader(): thực hiện lệnh và trả về DataReader

Page 27: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

27

NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider -------- CommandCommandCommandCommandCommandCommandCommandCommand

SqlConnection cnn = new SqlConnection();

cnn.ConnectionString = “server=.\\SQLEXPRESS;

database=Northwind; Trusted_connection=true”;

SqlCommand cmd = new SqlCommand(“”,cnn);

cmd.CommandText = “Select COUNT(*) From Customers”;

cnn.Open();

int count = (int) cmd.ExecuteScalar();

cnn.Close();

SQL Command

Page 28: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

28

NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider -------- CommandCommandCommandCommandCommandCommandCommandCommand

SqlConnection conn = new SqlConnection();

conn.ConnectionString = "Data source=.\\SQLEXPRESS;"+

"Initial Catalog=StudentDBStudentDB; Integrated security=yes;";

SqlCommand cmd = new SqlCommand();

cmd.CommandText =

"Insert into Sinhvien values(007,'Le Nam','1/1/1980',1,null,null)";

cmd.Connection = conn;

conn.Open();

cmd.ExecuteNonQuery();

conn.Close();

SQL Command

Page 29: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

29

NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider -------- CommandCommandCommandCommandCommandCommandCommandCommand

� Tham số hóa câu lệnh

� Một câu lệnh được sử dụng nhiều lần!

cmd.CommandText = "Insert into Sinhvien Insert into Sinhvien

values(@MS,@HT,@NS,@GT,@DC,@DT)values(@MS,@HT,@NS,@GT,@DC,@DT)";

cmd.Parameters.Add("@MS@MS", SqlDbType.Int);

cmd.Parameters.Add("@HT@HT", SqlDbType.NVarChar);

cmd.Parameters.Add("@NS@NS",SqlDbType.DateTime);

cmd.Parameters.Add("@GT@GT",SqlDbType.Bit);

cmd.Parameters.Add("@DC@DC",SqlDbType.NVarChar);

cmd.Parameters.Add("@DT@DT",SqlDbType.Int);

SQL Command - Param

Khai báo tham sốKhai báo tham số

Câu lệnh được tham

số hóa

Câu lệnh được tham

số hóa

Kiểu dữ liệuKiểu dữ liệuTên field Tên field

Page 30: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

30

NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider -------- CommandCommandCommandCommandCommandCommandCommandCommand

cmd.Parameters["@MS@MS"].Value = 999;

cmd.Parameters["@HT@HT"].Value = "Nguyen Ha Giang";

cmd.Parameters["@NS@NS"].Value = new DateTime(1978,12,4);

cmd.Parameters["@GT@GT"].Value = 1;

cmd.Parameters["@DC@DC"].Value = “Tan Binh";

cmd.Parameters["@DT@DT"].Value = 5120791;

conn.Open();

int count = (int) cmd.ExecuteNonQuery();

conn.Close();

SQL Command - Param

Truyền giátrị cho các

tham số tương ứng

Truyền giátrị cho các

tham số tương ứng

Page 31: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

31

NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider -------- DataReaderDataReaderDataReaderDataReaderDataReaderDataReaderDataReaderDataReader

Application Database

Connection

CommandDataReader

Thuộc tính & Phương thức

• HasRow: cho biết câu truy vấn có trả về dữ liệu• Read(): đọc một mẫu tin

• [i]: truy xuất đến cột i của mẫu tin được đọc

• Close(): đóng

Truy xuất tuần tự

Chỉ đọc dữ liệu

Cơ chế kết nối

Page 32: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

32

NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider -------- DataReaderDataReaderDataReaderDataReaderDataReaderDataReaderDataReaderDataReader

SqlCommand cmd = new SqlCommand("Select * Select *

From SinhvienFrom Sinhvien", conn);

SqlDataReader readerreader;

conn.Open();

readerreader = cmd.ExecuteReaderExecuteReader();

while (readerreader.Read())

listBox1.Items.Add(readerreader["Hoten"]);

readerreader.Close();

conn.Close();

DataReader

Thực thi lệnh truy vấnThực thi lệnh truy vấn

Đọc một dòng Đọc một dòng

Lấy cột Hoten của dòng vừa đọc

Lấy cột Hoten của dòng vừa đọc

Page 33: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

33

NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider -------- DataAdapterDataAdapterDataAdapterDataAdapterDataAdapterDataAdapterDataAdapterDataAdapter

Data SourceData SourceDataAdapterDataTable

DataTable

DataSetDataSet

DataAdapter

FillFill

UpdateUpdate

UpdateUpdate

FillFill

SelectCommandSelectCommand

UpdateCommandUpdateCommand

SelectCommandSelectCommand

UpdateCommandUpdateCommand

Page 34: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

34

NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider -------- DataAdapterDataAdapterDataAdapterDataAdapterDataAdapterDataAdapterDataAdapterDataAdapter

Thuộc tính & Phương thức

• FillFill(DataSet): sử dụng SelectCommand lấy dữ liệu từ Data Source đổ vào Data Set

• UpdateUpdate(DataSet): InsertCommand, UpdateCommand,

DeleteCommand cập nhật dữ liệu trong DataSet vào DataSource

DataBase DataSetDataAdapter

Fill Fill

Update Update

Page 35: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

35

NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider NET Data Provider -------- DataAdapterDataAdapterDataAdapterDataAdapterDataAdapterDataAdapterDataAdapterDataAdapter

string strConn="Server=.\\SQLEXPRESS; Database=StudentDB;

Trusted_connection=true";

SqlDataAdapter adapter = new

SqlDataAdapter("Select * From Sinhvien", strConn);

DataSet ds = new DataSet();

adapter.Fill(ds);

// thao tác trên dataset

adapter.Update(ds);

DataAdapter

Page 36: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

36

NNNNNNNNộội Dungi Dungi Dungi Dungi Dungi Dungi Dungi Dung

� ADO.NET

� Quá trình phát triển

� Đặc điểm ADO.NET

� .NET Data Provider

�� DataSetDataSet

� Data Source Configuration Wizard

Page 37: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

37

DataSetDataSetDataSetDataSetDataSetDataSetDataSetDataSet

� Là phần cơ sở dữ liệu được lưu trữ trong bộnhớ (in-memory database)

� Cơ chế không kết nối

� Nhờ đối tượng DataAdapter làm trung gian

� Hỗ trợ đầy đủ đặc tính XML

� Thao tác được với tất cả mô hình lưu trữ hiện tại: � Flat file database: plain text, mixed text, binary text

� Relational database.

� Hierarchical: data is organized into a tree-like structure

Page 38: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

38

DataSet vs. DataReaderDataSet vs. DataReaderDataSet vs. DataReaderDataSet vs. DataReaderDataSet vs. DataReaderDataSet vs. DataReaderDataSet vs. DataReaderDataSet vs. DataReader

Supported by Visual Studio .NET tools

Slower access

Forward-only

Bind to one control only

Based on one SQL statement from one database

Read-only

Manually coded

Faster access

Forward and backward scanning of data

Bind to multiple controls

Includes multiple tables from different databases

Read/write access to data

DataReaderDataSet

Disconnected Connected

Page 39: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

39

DataSetDataSetDataSetDataSetDataSetDataSetDataSetDataSet

� Các thành phần� Tables

� Relations

DataSetDataSetTablesTablesTables

DataTable

RelationsRelations

DataRelation

DataRelation

DataRow(s)

DataColumn

Constraint(s)

DataTable

DataTable

Page 40: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

40

DataSetDataSetDataSetDataSetDataSetDataSetDataSetDataSet

DataSet

.Tables[...]

.Relations[...]

...

DataSetDataSet

.Tables[...].Tables[...]

.Relations[...].Relations[...]

......

DataTable

.Columns[..]

.Rows[..]

DataTable

.Columns[..]

.Rows[..]

DataTable

.Columns[...]

.Rows[...]

.DefaultView

...

DataTableDataTable

.Columns[...].Columns[...]

.Rows[...].Rows[...]

.DefaultView.DefaultView

...

DataRowDataRow

DataRowDataRowdatadatadata

DataColumnDataColumn

schemaschemaschema

DataColumnDataColumn

DataView

DataRelationDataRelationDataRelationDataRelation

Page 41: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

41

DataSet DataSet DataSet DataSet DataSet DataSet DataSet DataSet -------- DataTableDataTableDataTableDataTableDataTableDataTableDataTableDataTable

� DataTable: thể hiện một bảng trong CSDL

Thuộc tính & Phương thức

• TableName: tên của bảng dữ liệu• ColumnsColumns: danh sách các cột

• RowsRows: danh sách các mẫu tin

• PrimaryKey: danh sách các cột là khóa chính

• NewRowNewRow(): tạo một mẫu tin mới

Page 42: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

42

DataSet DataSet DataSet DataSet DataSet DataSet DataSet DataSet -------- DataColumn DataColumn DataColumn DataColumn DataColumn DataColumn DataColumn DataColumn

� DataColumn: đại diện cho một cột trong bảng

� ColumnName: tên cột

� DataType: kiểu dữ liệu

DataTableDataTable

Column1Column1 Column2Column2 … Column nColumn n

Page 43: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

43

DataSet DataSet DataSet DataSet DataSet DataSet DataSet DataSet -------- DataRowDataRowDataRowDataRowDataRowDataRowDataRowDataRow

� DataRow: đại diện cho mẫu tin trong bảng

� RowState: trạng thái Added, Modified, Deleted,…

� [i]: truy xuất đến cột i

� Delete(): đánh dấu xóa mẫu tin

DataTableDataTable

Column1 Column2 … Column n

abc xyz omt

… … …

… … …

Row

Page 44: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

44

DataSetDataSetDataSetDataSetDataSetDataSetDataSetDataSet

string strConn = "data source=.\\SQLEXPRESS; Initial

Catalog=StudentDB; integrated security=yes;";

string strCmd = "Select * From Sinhvien";

SqlDataAdapter da = new SqlDataAdapter(strCmd, strConn);

SqlCommandBuilder builder = new SqlCommandBuilder(da);

DataSet ds = new DataSet();

da.Fill(ds);

foreach (DataRow dr in ds.Tables[0].Rows)

dr["Ngaysinh"] = DateTime.Now;

da.Update(ds);

DataSet – Update Row

VD: Cập nhật tất cả các

cột với ngày giờ hiện

hành

Page 45: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

45

DataSetDataSetDataSetDataSetDataSetDataSetDataSetDataSet

SqlDataAdapter da = new SqlDataAdapter(strCmd, strConn);

SqlCommandBuilder builder = new SqlCommandBuilder(da);

DataSet ds = new DataSet();

da.Fill(ds);

DataTable table = ds.Tables[0];

DataRow[] rows = table.Select("Ngaysinh<'1/1/1980'");

foreach (DataRow r in rows)

r.Delete();

da.Update(ds);

DataSet – Delete Row

Lấy các dòng cóngày sinh trước

1/1/1980

Lấy các dòng cóngày sinh trước

1/1/1980

Đánh dấu xóa các dòng này

Đánh dấu xóa các dòng này

Page 46: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

46

NNNNNNNNộội Dungi Dungi Dungi Dungi Dungi Dungi Dungi Dung

� ADO.NET

� Quá trình phát triển

� Đặc điểm ADO.NET

� .NET Data Provider

� DataSet

�� Data Source Configuration WizardData Source Configuration Wizard

Page 47: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

47

Data Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration Wizard

� Trong VS.NET 2005 có chức năng Data Source Configuration Wizard

� Nhanh chóng thiết lập Data Source cho project

� Xây dựng form hiển thị và thao tác dữ liệu� Thông qua thao tác kéo thả từ Data Source

Page 48: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

48

Data Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration Wizard

� Tạo một ứng dụng Windows Application

� Trong menu Data | Add New Data Source…

Page 49: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

49

Data Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration Wizard

� Tạo New Connection

Page 50: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

50

Data Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration Wizard

� Hoàn tất khai báo Data Source

Chuỗi kết nối

Page 51: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

51

Data Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration Wizard

� Lưu chuỗi kết nối trong file cấu hình

Tên của chuỗi kết nối

Page 52: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

52

Data Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration Wizard

� Chọn bảng dữ liệu

Bảng Sinhvien

và các field

Tên của DataSet

Page 53: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

53

Data Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration Wizard

� Wizard sẽ tạo ứng dụng với Data Source

Data Sources Windows

Form in Design View

Page 54: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

54

Data Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration Wizard

� Kéo thả binding control vào Form

� Trong cửa sổ Data Source

� Chọn bảng cần sử dụng

� Thiết lập view là DataGridView hay Details

� Kích chọn vào dấu mũi tên xuống sau tên bảng

Page 55: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

55

Data Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration Wizard

� Kéo Table thả vào Form

� Tự động tạo các binding control cho table

Detail

Page 56: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

56

Data Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration Wizard

� Bổ sung DataGridView cho Form

� Thay đổi Table sang DataGrid

� Kéo Table trong Data Source thả vào Form

DataGridView

Page 57: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

57

Data Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration WizardData Source Configuration Wizard

� Kết quả ứng dụng

Chưa viết code!

Page 58: Tổng Quan v ADO - Nguyen Gia Khoa's My Site | Just … · 2013-02-25 · Mỗi user có một k ết n ối c ố định t ... 24 NET Data Provider ... g 4i các l nh SQL, store,

58