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