Chương 1

GIỚI THIỆU ADO.NET và KẾT NỐI ĐẾN CSDL

Nội dung

 Khái niệm ứng dụng CSDL

 Kiến trúc ADO.NET

 Kết nối đến CSDL

2

KHÁI NIỆM ỨNG DỤNG CSDL

3

Khái niệm ứng dụng CSDL

 Định nghĩa “Ứng dụng CSDL”: Ứng dụng CSDL

Data–Centric Applications hay Database–Centric Applications hay

Data–Driven Application

là loại ứng dụng mà dữ liệu hay CSDL đóng vai trò tiên quyết.

 Ví dụ:

• Chương trình quản lý nhà sách • Hệ thống chương trình quản lý ngân hàng

4

Khái niệm ứng dụng CSDL

Database

Application

5

Khái niệm ứng dụng CSDL

 Định nghĩa “Data source” (Data storage): Nơi lưu

trữ dữ liệu. Thông thường là Database

 Một số loại Data source được hổ trợ trong .NET • MS SQL Server, Oracle, DB2, MS Access, …

6

KIẾN TRÚC ADO.NET

7

Kiến trúc ADO.NET

ADO.NET Data source

8

Kiến trúc ADO.NET

 ADO.NET là gì?

Data source

Application (C#, VB.NET, …) Thư viện truy cập dữ liệu ADO.NET

ư ệ

• ADO.NET là m t th  vi n ch a các l p th c hi n

ứ các ch c năng ế ố ứ

ụ ử

ữ ệ

ế

– K t n i  ng d ng v i data source  – Thêm, xóa, s a, tìm ki m d  li u trong data source

Data–Driven Application

9

Kiến trúc ADO.NET

10

Kiến trúc ADO.NET Những đối tượng quan trọng trong ADO.NET

 Kiến trúc ADO.NET được chia làm 2 phần

• Connected • Disconnected

 Những lớp khác nhau của ADO.NET có thể

phân loại thành: Connected và Disconnected. Ngoại lệ là lớp DataAdapter

11

Kiến trúc ADO.NET Những đối tượng quan trọng trong ADO.NET

ADO.NET

Đối tượng Disconnected

Đối tượng Connected

Database DataAdapter Application

DataSet DataTable DataRow … Connection Command Parameter …

12

Kiến trúc ADO.NET Những đối tượng quan trọng trong ADO.NET

 Các đối tượng Connected

• Connection • Command • Parameter • DataAdapter • DataReader • Transaction

13

Kiến trúc ADO.NET Những đối tượng quan trọng trong ADO.NET

 Các đối tượng Disconnected

• DataSet • DataTable • DataRow • DataColumn • DataView • Constraint • DataRelation

14

Kiến trúc ADO.NET .NET Data Providers

 ADO.NET hiện thực (bao gồm) tập các lớp

connected cho từng loại CSDL • Ví dụ: Để kết nối với MS SQL Server, chúng ta có lớp

giành riêng là SqlConnection, SqlCommand, SqlParameter, …

 Tập các lớp connected cho một CSDL nào đó được

nằm trong 1 namespace riêng • Ví dụ:

– System.Data.SqlClient – System.Data.OleDb

 Định nghĩa “.Net Data Provider”: Là một tập lớp

connected nằm trong cùng 1 namespace và được thiết kế để làm việc với một loại CSDL cụ thể

15

Kiến trúc ADO.NET .NET Data Providers

.Net Data Provider

Đối tượng Disconnected

DataAdapter Data Source Application

DataSet DataTable DataRow …

Đối tượng Connected Connection Command Parameter …

16

Kiến trúc ADO.NET .NET Data Providers  Các loại .Net Data Provider

 Chọn lựa .NET Data Provider • SQL Server .NET Data

Provider

Tên Data Source

Provider Namespace

– SQL Server version 7.0 trở

MS SQL Server 7.0 trở lên

System.Data.SqlClient

lên

Oracle 8.1.6 trở lên

System.Data.OracleClient

ODBC

System.Data.ODBC

• Oracle .NET Data Provider – Oracle 8.1.6 trở lên

OleDb

System.Data.OleDb

XML trong SQL Server

System.Data.SqlXml

• OLE DB .NET Data Provider – SQL Server 6.5, Microsoft Access, Oracle version < 8.1.6, những data sources có OLE DB providers • ODBC .NET Data Provider

– Dùng cho các data sources chỉ hổ trợ ODBC drivers

17

Kiến trúc ADO.NET

 Các namespace quan trọng trong ADO.NET

• System.Data • System.Data.Common • System.Data.SqlClient • System.Data.SqlTypes • System.Data.OleDb

18

KẾT NỐI ĐẾN CSDL

19

Kết nối đến CSDL

 Có 2 cách

• Dùng phương pháp kéo thả

• Tự viết code

20

KẾT NỐI ĐẾN CSDL (PHƯƠNG PHÁP KÉO THẢ)

21

Kết nối đến CSDL Phương pháp kéo thả

 Bước 1: Thiết lập Data Source

• Dùng Data Source là SQL Server 2008 • Tên CSDL: StarterDB • Tên Table: TableName

Create Table TableName (

IDName int primary key, ValueName varchar(100)

) Go

Insert into TableName values(‘1’, ‘Hello’) Go

22

Kết nối đến CSDL Phương pháp kéo thả

 Bước 2: Tạo ứng dụng Windows Forms

• Tên ứng dụng: VDKeoTha • Mở form Form1 trong Design mode

 Bước 3: Mở cửa sổ Data Source

• Chọn Data  Show Data Sources • Trong cửa số Data Source: Click vào liên kết

Add New Data Source

23

Kết nối đến CSDL Phương pháp kéo thả

 Bước 4: Chọn loại Data Source

• Chọn Database • Click nút Next

24

Kết nối đến CSDL Phương pháp kéo thả

 Bước 5: Thiết lập thông tin kết nối • Click vào nút New Connection • Chọn Microsoft SQL Server • Click nút “Continue”

25

Kết nối đến CSDL Phương pháp kéo thả

• Điền các thông tin về

CSDL

• Click Test Connection để kiểm tra thông tin nhập vào

• Click OK 2 lần để chấp

nhận Data Source

26

Kết nối đến CSDL Phương pháp kéo thả

• Thông tin kết nối được lưu trong 1 chuỗi kết

nối (Connection string)

27

Kết nối đến CSDL Phương pháp kéo thả

 Bước 6: Chọn lưu chuỗi kết nối

28

Kết nối đến CSDL Phương pháp kéo thả

 Bước 7: Chọn các đối tượng trong CSDL

• Chọn các bảng, các cột • Click nút Finish

29

Kết nối đến CSDL Phương pháp kéo thả

 Bước 8: Chọn các hiển thị dữ liệu trên Form

• Lúc này một data source có tên

StarterDataSet được thêm vào ứng dụng • Click nút Drop-Down kế bảng TableName

Chọn DataGridView

30

Kết nối đến CSDL Phương pháp kéo thả

 Bước 9: Kéo và Thả

• Kéo bảng TableName vào trong Form1

• Thao tác trên sinh ra một số controls

31

Kết nối đến CSDL Phương pháp kéo thả

 Một số code do IDE sinh ra

• Chuỗi kết nối trong file app.config

32

Kết nối đến CSDL Phương pháp kéo thả

• Code trong form

33

KẾT NỐI ĐẾN CSDL (PHƯƠNG PHÁP TỰ CODE)

34

Kết nối đến CSDL

 Bước 1: using một số namespace  Bước 2: Tạo kết nối: Tạo chuỗi kết nối + Đối

tượng kết nối

 Bước 3: Tạo đối tượng command chứa câu

SQL

 Bước 4: Mở kết nối  Bước 5: Chạy command  Bước 6: Đóng kết nối  Bước 7: Hiện dữ liệu

35

Kết nối đến CSDL Namespace

 Với OLE DB

• using System.Data; • using System.Data.OleDb;

 Với SQL Server

• using System.Data; • using System.Data.SqlClient;

36

Kết nối đến CSDL Chuỗi kết nối

37

Kết nối đến CSDL Chuỗi kết nối

 Để mở kết nối, chúng ta cần chỉ ra một số thông

tin (tham số): tên server, tên csdl, user ID, password, …

 Mỗi data source cần một tập các thông tin khác

nhau

 Định nghĩa “Chuỗi kết nối” (Connection String): Là 1 tập các thông tin cung cấp cho một thiết lập kết nối (tham số), và có hình thức các cặp key-value cách nhau bằng dấu “;”

parameterName1=value1; parameterName2=value2;…

38

Chuỗi kết nối Chuỗi kết nối cho OleDB và MS SQL Server  Chuỗi kết nối cho CSDL OleDB (MS Access) "Provider=Microsoft.Jet.OleDb.4.0; Data Source=DuLieu.mdb“ “Provider=Microsoft.ACE.OLEDB.12.0; Data Source=| DataDirectory|\Quanlyvt.accdb

"Server hay Data source=tenServer; Database hay Initial Catalog=tenCSDL; User Id=tenUser; Password=tenPass"

"Server=local; Database=pubs; Integrated Security=SSPI"

39

Kết nối đến CSDL Chuỗi kết nối

 Bảo mật CSDL SQL Server • Windows Authentication

• Mixed Mode

– Windows Authentication – SQL Server Authentication

40

Kết nối đến CSDL Chuỗi kết nối

 Một số từ khóa liên quan đến chuỗi kết nối cho SQL Server

Keyword Ý nghĩa

Data Source, Server, addr, Tên hay địa chỉ của database server.

address, network address

Initial Catalog, Database Tên của database

Integrated Security, Bảo mật dựa trên HĐH Windows. Có thể gán bằng true,

trusted_connection false, hay sspi. Default là false.

User ID, uid, user user name để kết nối đến SQL Server khi không dùng

trusted connection.

Password, pwd password để kết nối đến SQL Server khi không dùng trusted

connection.

Pooling Khi bằng true, dùng pool để lưu trữ các connection. Default

là true

Max Pool Size Số connection tối đa được lưu trong connection pool.

Default là 100.

Min Pool Size Số connection tối thiểu được lưu trong connection pool.

Default là 0.

Connect Timeout, connection

timeout, timeout Default là 15 giây. Thời gian chờ (tính bằng giây) khi kết nối đến data store. 41

Kết nối đến CSDL Đối tượng Connection

 Tạo đối tượng kết nối  Kết hợp đối tượng kết nối với chuỗi kết nối  Dùng Constructor của lớp Connection

42

Kết nối đến CSDL Đối tượng Connection

 Tạo một đối tượng của lớp Connection (tương ứng với data source cho trước)

SqlConnection conn = new SqlConnection();

 Chỉ ra các tham số kết nối dùng property

ConnectionString

string strConn =

"Data Source=(local); Initial Catalog=demoDB; Integrated Security=SSPI";

conn.ConnectionString=strConn;

43

Kết nối đến CSDL Đối tượng Connection

 Có thể dùng constructor của lớp Connection

string strConn =

"Data Source=(local); Initial Catalog=demoDB; Integrated Security=SSPI";

SqlConnection conn = new SqlConnection(strConn);

44

Kết nối đến CSDL Đối tượng Connection

 Mở kết nối  Đóng kết nối  Kiểm tra trạng thái đối tượng Connection

45

Kết nối đến CSDL Đối tượng Connection

 Phương thức Open()

 Một số bước được thực hiện khi mở kết nối MỚI

• Thiết lập kênh vật lý (socket hay pipe) • Bắt tay với Server • Phân tích chuỗi kết nối • Xác thực với Server • …

t n ố ờ th i gian

46

Kết nối đến CSDL Đối tượng Connection

 Phương thức Close()

• Đặt connection đã mở vào connection pooler

 Phương thức Dispose()

• Đặt connection vào connection pooler • Giải phóng các tài nguyên (Cho phép GC dọn dẹp)

47

Kết nối đến CSDL Đối tượng Connection

 Property State

• ConnectionState.Open • ConnectionState.Closed

SqlConnection conn = new SqlConnection(strConn); … if (conn.State == ConnectionState.Open) {

conn.Close();

}

48

Kết nối đến CSDL Đối tượng Connection

string strConn =

"Data Source=(local); Initial Catalog=demoDB; Integrated Security=SSPI";

SqlConnection conn = new SqlConnection(strConn);

try {

conn.Open(); //…

} catch (SqlException ex) {

//…

} finally {

conn.Dispose();

49

}

Lưu trữ chuỗi kết nối

 Lưu trong file cấu hình: app.config

• .Net 1.x

• .Net 2.0

50

Lưu trữ chuỗi kết nối

 Đọc chuỗi kết nối từ file app.config System.configuration

• References: • Namespace: using System.Configuration; • Sử dụng lớp: ConfigurationManager

string strConn; strConn = ConfigurationManager.ConnectionStrings["ten"].ConnectionString;

51

Tóm tắt chương 1

 ADO.NET là thư viện giúp việc kết nối giữa ứng dụng và data source. Thư viện này nằm trong System.Data

 ADO.NET gồm 2 phần

• Disconnected • Connected

 Phần Disconnected sử dụng phần Connected để kết

nối với data source

 Một số tiếp cận viết code ADO.NET • Phương pháp Drap-and-drop • Phương pháp Tự viết code

52