01 chuong1-gioithieuado-140404114504-phpapp01

52
GIỚI THIỆU ADO.NET và KẾT NỐI ĐẾN CSDL Chương 1

Transcript of 01 chuong1-gioithieuado-140404114504-phpapp01

Page 1: 01 chuong1-gioithieuado-140404114504-phpapp01

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

Chương 1

Page 2: 01 chuong1-gioithieuado-140404114504-phpapp01

2

Nội dung

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

Kiến trúc ADO.NET

Kết nối đến CSDL

Page 3: 01 chuong1-gioithieuado-140404114504-phpapp01

3

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

Page 4: 01 chuong1-gioithieuado-140404114504-phpapp01

4

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

Page 5: 01 chuong1-gioithieuado-140404114504-phpapp01

5

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

Database

Application

Page 6: 01 chuong1-gioithieuado-140404114504-phpapp01

6

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, …

Page 7: 01 chuong1-gioithieuado-140404114504-phpapp01

7

KIẾN TRÚC ADO.NET

Page 8: 01 chuong1-gioithieuado-140404114504-phpapp01

8

Kiến trúc ADO.NET

Data sourceADO.NET

Page 9: 01 chuong1-gioithieuado-140404114504-phpapp01

9

Kiến trúc ADO.NET

ADO.NET là gì?

Data sourceApplication(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

Page 10: 01 chuong1-gioithieuado-140404114504-phpapp01

10

Kiến trúc ADO.NET

Page 11: 01 chuong1-gioithieuado-140404114504-phpapp01

11

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

Page 12: 01 chuong1-gioithieuado-140404114504-phpapp01

12

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

Application DatabaseDataAdapter

Đối tượng Disconnected Đối tượng Connected

DataSetDataTableDataRow

ConnectionCommandParameter

ADO.NET

Page 13: 01 chuong1-gioithieuado-140404114504-phpapp01

13

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

Page 14: 01 chuong1-gioithieuado-140404114504-phpapp01

14

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

Page 15: 01 chuong1-gioithieuado-140404114504-phpapp01

15

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ể

Page 16: 01 chuong1-gioithieuado-140404114504-phpapp01

16

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

ApplicationData

SourceDataAdapter

Đối tượng Disconnected

Đối tượng ConnectedDataSet

DataTableDataRow

ConnectionCommandParameter

.Net Data Provider

Page 17: 01 chuong1-gioithieuado-140404114504-phpapp01

17

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

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

Provider– SQL Server version 7.0 trở

lên• Oracle .NET Data Provider

– Oracle 8.1.6 trở lên• 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

Các loại .Net Data Provider

Tên Data Source Provider Namespace

MS SQL Server 7.0 trở lên System.Data.SqlClient

Oracle 8.1.6 trở lên System.Data.OracleClient

ODBC System.Data.ODBC

OleDb System.Data.OleDb

XML trong SQL Server System.Data.SqlXml

Page 18: 01 chuong1-gioithieuado-140404114504-phpapp01

18

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

Page 19: 01 chuong1-gioithieuado-140404114504-phpapp01

19

KẾT NỐI ĐẾN CSDL

Page 20: 01 chuong1-gioithieuado-140404114504-phpapp01

20

Kết nối đến CSDL

Có 2 cách• Dùng phương pháp kéo thả

• Tự viết code

Page 21: 01 chuong1-gioithieuado-140404114504-phpapp01

21

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

Page 22: 01 chuong1-gioithieuado-140404114504-phpapp01

22

Kết nối đến CSDLPhươ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

Page 23: 01 chuong1-gioithieuado-140404114504-phpapp01

23

Kết nối đến CSDLPhươ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

Page 24: 01 chuong1-gioithieuado-140404114504-phpapp01

24

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

Bước 4: Chọn loại Data Source• Chọn Database• Click nút Next

Page 25: 01 chuong1-gioithieuado-140404114504-phpapp01

25

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”

Page 26: 01 chuong1-gioithieuado-140404114504-phpapp01

26

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 tinnhập vào

• Click OK 2 lần để chấpnhận Data Source

Page 27: 01 chuong1-gioithieuado-140404114504-phpapp01

27

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)

Page 28: 01 chuong1-gioithieuado-140404114504-phpapp01

28

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

Page 29: 01 chuong1-gioithieuado-140404114504-phpapp01

29

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

Page 30: 01 chuong1-gioithieuado-140404114504-phpapp01

30

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

Page 31: 01 chuong1-gioithieuado-140404114504-phpapp01

31

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

Page 32: 01 chuong1-gioithieuado-140404114504-phpapp01

32

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

Page 33: 01 chuong1-gioithieuado-140404114504-phpapp01

33

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

• Code trong form

Page 34: 01 chuong1-gioithieuado-140404114504-phpapp01

34

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

Page 35: 01 chuong1-gioithieuado-140404114504-phpapp01

35

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

Page 36: 01 chuong1-gioithieuado-140404114504-phpapp01

36

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;

Page 37: 01 chuong1-gioithieuado-140404114504-phpapp01

37

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

Page 38: 01 chuong1-gioithieuado-140404114504-phpapp01

38

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;…

Page 39: 01 chuong1-gioithieuado-140404114504-phpapp01

39

Chuỗi kết nốiChuỗ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" Chuỗi kết nối cho CSDL MS SQL Server

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

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

Page 40: 01 chuong1-gioithieuado-140404114504-phpapp01

40

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

Page 41: 01 chuong1-gioithieuado-140404114504-phpapp01

41

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 ServerKeyword Ý nghĩa

Data Source, Server, addr, address, network address

Tên hay địa chỉ của database server.

Initial Catalog, Database Tên của database

Integrated Security, trusted_connection

Bảo mật dựa trên HĐH Windows. Có thể gán bằng true, 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

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

Page 42: 01 chuong1-gioithieuado-140404114504-phpapp01

42

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

Page 43: 01 chuong1-gioithieuado-140404114504-phpapp01

43

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;

Page 44: 01 chuong1-gioithieuado-140404114504-phpapp01

44

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

Có thể dùng constructor của lớp Connectionstring strConn =

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

SqlConnection conn = new SqlConnection(strConn);

Page 45: 01 chuong1-gioithieuado-140404114504-phpapp01

45

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

Page 46: 01 chuong1-gioithieuado-140404114504-phpapp01

46

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

Page 47: 01 chuong1-gioithieuado-140404114504-phpapp01

47

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)

Page 48: 01 chuong1-gioithieuado-140404114504-phpapp01

48

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();}

Page 49: 01 chuong1-gioithieuado-140404114504-phpapp01

49

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();}

Page 50: 01 chuong1-gioithieuado-140404114504-phpapp01

50

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

Lưu trong file cấu hình: app.config• .Net 1.x<?xml version="1.0" encoding="utf-8" ?><configuration> <appSettings> <add key="ConnectionString" value="..."/> </appSettings></configuration>

<?xml version="1.0" encoding="utf-8" ?><configuration> <connectionStrings> <add name="tên" connectionString="..."/> </connectionStrings></configuration>

• .Net 2.0

Page 51: 01 chuong1-gioithieuado-140404114504-phpapp01

51

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

Đọc chuỗi kết nối từ file app.config• References: System.configuration• Namespace: using System.Configuration;• Sử dụng lớp: ConfigurationManager

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

Page 52: 01 chuong1-gioithieuado-140404114504-phpapp01

52

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