1
2/19/2013 Trình bày: Nguyễn Hữu Nhân
Tạo database SQL server
Tổng quan về ADO.NET 4.0
Thao tác với CSDL với ADO.NET 4.0
◦ Thiết lập kết nối CSDL
◦ Truy vấn CSDL
SqlConnection
SqlCommand
SqlDataReader
2
2/19/2013 Trình bày: Nguyễn Hữu Nhân
Right click vào mục
Database chọn New
Database.
Nhập tên Database: News
Chọn OK
3 2/19/2013 Trình bày: Nguyễn Hữu Nhân
Tạo table MENU
Right click vào mục Table
trong Database News,
chọn New Table
Nhập thông tin như hình:
Ấn ctrl + S, nhập tên
table là MENU, chọn OK
4 2/19/2013 Trình bày: Nguyễn Hữu Nhân
Tương tự tạo table PAGE, thông tin như
sau:
Ấn ctrl + S, nhập tên table là PAGE, chọn OK
5 2/19/2013 Trình bày: Nguyễn Hữu Nhân
KIẾN TRÚC ADO.NET
◦ Các lớp thư viện ADO.NET bao gồm 2 nhóm chính: .Net
Framework Data Providers (trình cung ứng dữ liệu .NET
Framework ) và DataSet
6
2/19/2013 Trình bày: Nguyễn Hữu Nhân
KIẾN TRÚC ADO.NET
◦ .NET Framework Data Providers: gồm các thành phần được
thiết kế tường minh cho việc thao tác dữ liệu và nhanh chóng, về
phía trước, chỉ đọc khi truy cập đến dữ liệu
Connection: cung cấp việc kết nối kết các nguồn dữ liệu
Command: cho phép truy cập đến các câu lệnh dữ liệu để trả về dữ
liệu, chỉnh sửa dữ liệu, chạy thủ tục lưu trữ, gửi hoặc truy xuất các
tham số thông tin.
DataReader: cung cấp việc truy cập nhanh và chỉ đọc đến kết quả truy
vấn.
DataAdapter: cung cấp cầu nối giữa đối tượng DataSet và nguồn dữ
liệu. DataAdapter sử dụng đối tượng Command để thực thi các câu
lệnh SQL để đổ vào DataSet cũng như cập nhật dữ liệu từ DataSet trở
lại nguồn dữ liệu
7
2/19/2013 Trình bày: Nguyễn Hữu Nhân
KIẾN TRÚC ADO.NET
◦ DataSet
Được thiết kế để có thể truy cập độc lập đến bất kỳ nguồn dữ liệu.
Kết quả là nó có thể sử dụng với các nguồn dữ liệu đa dạng và
khác nhau, dùng với dữ liệu XML hoặc dùng để quản lý dữ liệu
cục bộ của ứng dụng.
DataSet chứa một hoặc nhiều đối tượng bảng dữ liệu (DataTable)
mà mỗi đối tượng chứa các dòng và cột dữ liệu, và cũng có khóa
chính, khóa ngoại, ràng buộc và mối quan hệ thông tin giữa các
DataTable
8
2/19/2013 Trình bày: Nguyễn Hữu Nhân
Khai báo namepage cần thiết
Các bước kết nối đến CSDL
9 2/19/2013 Trình bày: Nguyễn Hữu Nhân
Khai báo namepage cần thiết
Cần khai báo namepage sau ở phần đầu chương trình
10
2/19/2013 Trình bày: Nguyễn Hữu Nhân
Các bước kết nối đến CSDL
◦ Để thiết lập kết nối đến CSDL SQL Server
thực hiện như sau:
Xây dựng chuỗi chuỗi kết nối đến CSDL
Tạo một thể hiện của lớp SqlConnection và truyền
chuỗi kết nối vào trong hàm xây dựng
Gọi phương thức Open để mở kết nối
11
2/19/2013 Trình bày: Nguyễn Hữu Nhân
Data Source=WIN7-PC;Initial
Catalog=qlbh;Integrated Security=True;
Server=172.16.2.21; Initial Catalog=qlcv;
uid=qlcongvan;pwd=qtm@DThU123;
12 2/19/2013 Trình bày: Nguyễn Hữu Nhân
DataSource: chỉ định server sẽ kết nối. Nếu kết nối trên
máy tính cục bộ ta có thể sử dụng (local)
InitialCatalog: chỉ định tên CSDL cần sử dụng
IntegratedSecurity: true - sử dụng quyền chứng thực
Windows. Nếu sử dụng tài khoản SQL Server thì thiết
đặt về IntegratedSecurity = false hoặc bỏ qua, sau đó
thêm hai từ khóa sau vào đối tượng
SqlConnectionStringBuilder: UserID (tên tài khoản trong
SQL Server) và Password (mật khẩu tương ứng UserID)
13
2/19/2013 Trình bày: Nguyễn Hữu Nhân
SqlConnection sqlConn = new SqlConnection();
try
{
sqlConn.ConnectionString = strConn;
if (sqlConn.State != System.Data.ConnectionState.Closed)
sqlConn.Close();
sqlConn.Open();
}
catch
{
sqlConn.Dispose(); //Giai phong vung nho cua lop
}
14
2/19/2013 Trình bày: Nguyễn Hữu Nhân
TRUY VẤN CSDL
◦ Đối tượng SqlCommand
ADO.NET cho phép xử lý bất kỳ câu lệnh
SQL nào thông qua thể hiện của lớp
SqlCommand.
Lớp này đóng gói một hay nhiều câu lệnh
SQL và chứa các phương thức để yêu cầu
xử lý các câu lệnh dựa kết nối với SQL
Server, tùy chọn việc trả về kết quả truy vấn.
15
2/19/2013 Trình bày: Nguyễn Hữu Nhân
TRUY VẤN CSDL
◦ Đối tượng SqlCommand
Tạo đối tượng Command
Tạo một thể hiện của SqlCommand
Gán câu lệnh SQL vào thuộc tính CommandText
của đối tượng
Thiết lập thuộc tính Connection của đối tượng là
một thể hiện đã được mở kết nối của
SqlConnection
Gọi một phương thức của đối tượng để thực thi
câu lệnh
16
2/19/2013 Trình bày: Nguyễn Hữu Nhân
TRUY VẤN CSDL
◦ Đối tượng SqlCommand
Truy vấn không trả về kết quả
Đối tượng Command cho phép làm việc với các
câu lệnh có trả về kết quả và không trả về kết quả.
Các câu lệnh không trả về kết quả thường là các
hành động thêm, cập nhật hoặc xóa các mẫu tin từ
CSDL
Để xử lý các câu truy vấn dạng này, sử dụng
phương thức ExecuteNonQuery
17
2/19/2013 Trình bày: Nguyễn Hữu Nhân
TRUY VẤN CSDL
◦ Đối tượng SqlCommand
Truy vấn không trả về kết quả
Ví dụ
18
SqlCommand sqlComm = new SqlCommand();
sqlComm.Connection = sqlConn;
sqlComm.CommandType = System.Data.CommandType.Text;
sqlComm.CommandText = sql; //Insert, Update, Delete
int n = sqlComm.ExecuteNonQuery();
//n là số mẫu tin bị tác động khi thực thi
2/19/2013 Trình bày: Nguyễn Hữu Nhân
TRUY VẤN CSDL
◦ Đối tượng SqlCommand
Truy vấn trả về kết quả
Đối tượng Command chứa nhiều phương thức cho phép trả
về giá trị đơn hoặc nhiều dòng dữ liệu của bảng dữ liệu
Trả về giá trị đơn
Phương thức ExecuteScalar gửi một câu lệnh SQL hoặc
một thủ tục lưu trữ đến CSDL và trả về giá trị đơn. Phương
thức này hữu dụng cho các câu lệnh SELECT mà chỉ trả
về một giá trị
ExecuteScalar trả về giá trị kiểu Object nên cần chuyển
về kiểu mong muốn sau khi nhận. Phương thức trả về
System.DBNull nếu không có kết quả
19
2/19/2013 Trình bày: Nguyễn Hữu Nhân
TRUY VẤN CSDL
◦ Đối tượng SqlCommand
Truy vấn không trả về kết quả
Ví dụ
20
SqlCommand sqlComm = new SqlCommand();
sqlComm.Connection = sqlConn;
sqlComm.CommandType = System.Data.CommandType.Text;
sqlComm.CommandText = sql; //Avg, Sum, Min, Max
int n = sqlComm.ExecuteScalar();
//n nhận giá trị của hàm Avg, Sum, Min, max
2/19/2013 Trình bày: Nguyễn Hữu Nhân
TRUY VẤN CSDL
◦ Đối tượng SqlCommand
Truy vấn trả về kết quả
Trả về các dòng dữ liệu
Phương thức ExecuteReader cho phép xử lý các dòng dữ
liệu trả về từ câu lệnh SELECT hoặc thủ tục lưu trữ.
Phương thức này trả về đối tượng SqlDataReader cho
phép duyệt qua các dòng dữ liệu trả về
21
2/19/2013 Trình bày: Nguyễn Hữu Nhân
TRUY VẤN CSDL
◦ Đối tượng SqlCommand
Truy vấn trả về kết quả
Trả về các dòng dữ liệu
Ví dụ
22
SqlCommand sqlComm = new SqlCommand();
sqlComm.Connection = sqlConn;
sqlComm.CommandType = System.Data.CommandType.Text;
sqlComm.CommandText = sql; //Select
SqlDataReader sqlDare = sqlComm.ExecuteReader
2/19/2013 Trình bày: Nguyễn Hữu Nhân
TRUY VẤN CSDL
◦ Đối tượng SqlDataReader
Đối tượng này cho phép duyệt qua các dòng dữ liệu
trả về, kiểm tra giá trị dữ liệu các cột tại mỗi dòng.
SqlDataReader nhanh và nhẹ.
SqlDataReader trỏ đến chính xác một dòng dữ liệu
tạo một thời điểm
Phương thức Read(): duyệt tuần tự qua các dòng
dữ liệu. Phương thức trả về false khi không còn
dòng dữ liệu nào.
Thuộc tính HasRows: kiểm tra truy vấn có trả về
kết quả hay không
23
2/19/2013 Trình bày: Nguyễn Hữu Nhân
TRUY VẤN CSDL
◦ Đối tượng SqlDataReader
Ví dụ
24
SqlDataReader sqlDare;
while sqlDare.Read()
{
string s1 = sqlDare[1]; //Cột 1
string s2 = sqlDare[“ID_P”]; // Cột ID_P
}
2/19/2013 Trình bày: Nguyễn Hữu Nhân
TRUY VẤN CSDL
◦ Đối tượng SqlDataReader
Chú ý
Phải luôn gọi phương thức Close() hoặc Dispose() khi kết
thúc việc sử dụng đối tượng. Mặc định, SQL Server chỉ cho
phép sử dụng một đối tượng reader tại một thời điểm. Để mở
reader mới cần đóng đối tượng trước đó.
25
2/19/2013 Trình bày: Nguyễn Hữu Nhân