4. 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
6. 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, …
9. 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
11. 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. 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
DataSet
DataTable
DataRow
…
Connection
Command
Parameter
…
ADO.NET
13. 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. 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. 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. 16
Kiến trúc ADO.NET
.NET Data Providers
Application
Data
SourceDataAdapter
Đối tượng Disconnected
Đối tượng Connected
DataSet
DataTable
DataRow
…
Connection
Command
Parameter
…
.Net Data
Provider
17. 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. 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
22. 22
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
23. 23
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
24. 24
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
25. 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. 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 tin
nhập vào
• Click OK 2 lần để chấp
nhận Data Source
27. 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. 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. 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. 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. 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. 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. 33
Kết nối đến CSDL
Phƣơng pháp kéo thả
• Code trong form
35. 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. 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;
38. 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. 39
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"
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. 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. 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 Server
Keyword Ý 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. 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. 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. 44
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);
45. 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. 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. 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. 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. 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();
}
51. 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. 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