GIỚI THIỆU ADO.NET và KẾT NỐI ĐẾN CSDL Chương 1
GIỚI THIỆU ADO.NET và KẾT NỐI ĐẾN CSDL
Chương 1
2
Nội dung
Khái niệm ứng dụng CSDL
Kiến trúc ADO.NET
Kết nối đến CSDL
3
KHÁI NIỆM ỨNG DỤNG CSDL
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
5
Khái niệm ứng dụng CSDL
Database
Application
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, …
7
KIẾN TRÚC ADO.NET
8
Kiến trúc ADO.NET
Data sourceADO.NET
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
10
Kiến trúc ADO.NET
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
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
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
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
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ể
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
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
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
19
KẾT NỐI ĐẾN CSDL
20
Kết nối đến CSDL
Có 2 cách• Dùng phương pháp kéo thả
• Tự viết code
21
KẾT NỐI ĐẾN CSDL(PHƯƠNG PHÁP KÉO THẢ)
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
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
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
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”
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
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)
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
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
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
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
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
33
Kết nối đến CSDL Phương pháp kéo thả
• Code trong form
34
KẾT NỐI ĐẾN CSDL(PHƯƠNG PHÁP TỰ CODE)
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
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;
37
Kết nối đến CSDL Chuỗi kết nối
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;…
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"
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
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.
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
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;
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);
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
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
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)
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();}
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();}
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
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;
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