n ADO.NET là một phần của .NET Framework q Thư viện lớp có chức năng thao tác dữ liệu trong ngôn ngữ MS.NET n ADO.NET là dạng “ Disconnected ” q Cho phép lấy cả một cấu trúc phức tạp của
Trang 1AD O.N ET
ThS Nguyễn Hà Giang
Trang 3Gi i thi u ADO.NET
n ActiveX Data Object NET (ADO.NET)
q Công nghệ của MS trên NET Framework
q Phát triển từ nền tảng ADO
q Cung cấp các lớp đối tượng và hàm thư viện phục
vụ cho việc kết nối và xử lý dữ liệu
.NET Application
ADO.NET
Trang 4Gi i thi u ADO.NET
n Mô hình NET Framework
Microsoft NET Framework
Common Language Runtime
Base Classes
Web Services User Interface
Data and XML
Trang 6Database ODBC API
DB API
Trang 7Provider Provider Provider Provider
Relational Data Non-Relational Data
Trang 8Quá trình phát triển
ADO.NET
Trang 10n ADO.NET là một phần của NET Framework
q Thư viện lớp có chức năng thao tác dữ liệu trong ngôn ngữ MS.NET
n ADO.NET là dạng “ Disconnected ”
q Cho phép lấy cả một cấu trúc phức tạp của DL từ CSDL, sau đó ngắt kết nối rồi mới thực hiện thao tác xử lý!
q ADO luôn phải duy trì kết nối trong suốt quá trình làm việc.
Trang 11Môi tr ng “ connected ”
n Mỗi user có một kết nối cố định tới data source
n Ưu điểm
q Môi trường được bảo vệ tốt
q Kiểm soát được sự đồng bộ
q Dữ liệu luôn được mới
q Phải có một kết nối mạng cố định
q Scalability
Trang 12Môi tr ng “ disconnected ”
n Một tập con của dữ liệu trung tâm được sao chép
và bổ sung độc lập, sau đó sẽ được merge lại
vào dữ liệu trung tâm.
n Ưu điểm
q Có thể làm việc bất cứ lúc nào, cũng như có thể kết nối bất kỳ vào Data Source
q Cho phép user khác có thể kết nối
q Nâng cao hiệu suất thực hiện của ứng dụng
n Khuyết
q Dữ liệu không được cập nhật một cách nhanh nhất
q Sự tranh chấp có thể xuất hiện và phải giải quyết
Trang 13n ADO.NET mạnh mẽ
q Kế thừa các ưu điểm của ADO
q Kết hợp với ý tưởng thiết kế hoàn toàn mới
n Đặc điểm nổi bật
q Thiết kế hoàn toàn dựa vào XML
n Chuẩn giao tiếp dữ liệu phổ biến nhất trên môi trường Internet hiện nay
q Thiết kế hoàn toàn hướng đối tượng
n Đặc trưng của thư viện NET Framework
Trang 14Recordset : tương đương 1 bảng
dữ liệu trong database
Dataset : tương đương 1 database
Duyệt dữ liệu Recordset chỉ cho phép duyệt tuần
tự, từng dòng một.
Dataset : duyệt “tự do, ngẫu nhiên”, truy cập thẳng tới bảng, dòng, cột mong muốn.
Dữ liệu ngắt kết
nối
Recordset thiên về hướng kết nối, nên việc hỗ trợ ngắt kết nối không mạnh
Dataset hỗ trợ hoàn toàn ngắt kết nối
Trao đổi dữ liệu
qua Internet
Khả năng trao đổi dữ liệu ADO qua Internet thường có nhiều hạn chế Do dùng chuẩn COM
ADO.NET trao đổi dữ liệu qua Internet rất dễ dàng vì ADO.NET được thiết kế theo chuẩn XML, là chuẩn dữ liệu chính được sử dụng
để trao đổi trên Internet.
Trang 15n Kiến trúc của ADO.NET gồm 2 phần chính
tác dữ liệu, phải thực hiện kết nối khi thao tác
n Connection : quản lý việc đóng mở DB
q ???Connection: Sql Connection, OleDb Connection
n Command : lệnh truy vấn, tương tác dữ liệu khi đang lập kết nối
q ???Command: Sql Command, OleDb Command
n DataReader : đọc dữ liệu, chỉ xử lý 1 dòng dữ liệu tại một thời điểm
q ???DataReader: Sql DataReader, OleDb DataReader
n DataAdapter : cầu nối giữa DB và DataSet
Trang 17Mô h ì nh i t ng ADO.NET
Trang 18C á c l p th vi n ADO.NET
n System.Data OleDb : Access, SQL Server, Oracle
n System.Data SqlClient : SQL Server
n System.Data OracleClient : Oracle
n Đặc điểm:
q Cả ba thư viện trên về giao tiếp lập trình là giống nhau
q Dùng thư viện SqlClient truy xuất SQL Server
nhanh hơn OleDb
q Tương tự cho OracleClient
Trang 20NET Data Provider
n Mô hình NET Data Provider
Trang 21NET Data Provider - Connection
Connection
Thuộc tính & Phương thức
• ConnectionString: chuỗi kết nối DataSource
• Open(): thiết lập kết nối đến DS
• Close(): đóng kết nối với DS
Trang 22NET Data Provider - Connection
n Mô tả CSDL sử dụng minh họa
DBMS MS SQL Server Express 2005
DB 1 CSDL StudentDB
DB 2 CSDL Northwind
Trang 23NET Data Provider - Connection
SqlConnection cnn = new SqlConnection();
cnn.ConnectionString = “ server= \\SQLEXPRESS;
Trang 24NET Data Provider - Connection
ODBC/OLE DB Connection (*) Database
MS Access Driver = {Microsoft Access Driver (*.mdb)};
DBQ = <đường dẫn file access>
Provider=Microsoft.Jet.OLEDB.4.0; Data Source
= <đường dẫn file access>
SQL Server Driver = {SQLServer}; Server = ServerName;
Database= DatabaseName; Uid=Username;
Pwd=Password;
Provider= SQLOLEDB; Data Source=ServerName; Initial Catalog=DatabaseName; UserId=Username; Password=Password
(*): Xem thêm chuỗi kết nối trong: http://www.connectionstrings.com/?carrier=sqlserver2005
Trang 25NET Data Provider - Connection
OleDbConnection cnn = new OleDbSqlConnection();
Trang 26NET Data Provider - Command
Connection Command
Thuộc tính & Phương thức
• Connection: kết nối để thực hiện lệnh
• CommandText: câu lệnh cần thực hiện
• CommandType: loại câu lệnh (Text,TableDirect, StoredProc)
• ExecuteScalar(): thực hiện câu lệnh và trả về giá trị đơn
• ExecuteNonQuery(): gọi các lệnh SQL, store, trả về số row bị
tác động (Insert, Update, Delete…)
• ExecuteReader(): thực hiện lệnh và trả về DataReader
Trang 27NET Data Provider - Command
SqlConnection cnn = new SqlConnection();
cnn.ConnectionString = “server=.\\SQLEXPRESS;
database=Northwind; Trusted_connection=true”;
SqlCommand cmd = new SqlCommand(“”,cnn);
cmd.CommandText = “ SELECT COUNT(*) FROM Customers ”;
cnn.Open();
int count = (int) cmd.ExecuteScalar();
cnn.Close();
SQL Command
Trang 28NET Data Provider - Command
SqlConnection conn = new SqlConnection();
conn.ConnectionString = " Data source=.\\SQLEXPRESS; "+
" Initial Catalog=StudentDB; Integrated security=yes; ";
SqlCommand cmd = new SqlCommand();
Trang 29NET Data Provider - Command
n Tham số hóa câu lệnh
q Một câu lệnh được sử dụng nhiều lần!
Câu lệnh được tham
số hóa
Trang 30NET Data Provider - Command
…
cmd.Parameters[" @MS "].Value = 999;
cmd.Parameters[" @HT "].Value = "Nguyen Ha Giang";
cmd.Parameters[" @NS "].Value = new DateTime(1978,12,4);
Trang 31NET Data Provider - DataReader
Connection Command DataReader
Thuộc tính & Phương thức
• HasRow : cho biết câu truy vấn có trả về dữ liệu
• Read() : đọc một mẫu tin
• [i] : truy xuất đến cột i của mẫu tin được đọc
• Close() : đóng
Truy xuất tuần tự Chỉ đọc dữ liệu
Cơ chế kết nối
Trang 32NET Data Provider - DataReader
…
SqlCommand cmd = new SqlCommand(“ SELECT *
FROM Sinhvien ", conn);
SqlDataReader reader ;
conn.Open();
reader = cmd ExecuteReader ();
while ( reader Read())
listBox1.Items.Add( reader ["Hoten"]);
Trang 33NET Data Provider - DataAdapter
Data Source
DataAdapter DataTable
DataTable
DataSet
DataAdapter Fill
Trang 34NET Data Provider - DataAdapter
Thuộc tính & Phương thức
• Fill (DataSet): sử dụng SelectCommand lấy dữ liệu từ Data Source
đổ vào Data Set
• Update (DataSet): InsertCommand, UpdateCommand,
DeleteCommand cập nhật dữ liệu trong DataSet vào DataSource
DataBase DataAdapter DataSet
Trang 35NET Data Provider - DataAdapter
string strConn=" Server=.\\SQLEXPRESS; Database=StudentDB;
Trusted_connection=true ";
SqlDataAdapter adapter = new
SqlDataAdapter(“ SELECT * FROM Sinhvien ", strConn);
DataSet ds = new DataSet();
Trang 37n Là phần cơ sở dữ liệu được lưu trữ trong bộ
nhớ (in-memory database)
n Cơ chế không kết nối
n Nhờ đối tượng DataAdapter làm trung gian
Trang 38Based on one SQL statement from one database
Read-only
Manually coded Faster access
Forward and backward scanning of data
Bind to multiple controls
Includes multiple tables from different databases
Read/write access to data
DataReader DataSet
Trang 39DataRow(s) DataColumn Constraint(s)
DataTable DataTable
Trang 41DataSet - DataTable
n DataTable: thể hiện một bảng trong CSDL
Thuộc tính & Phương thức
• TableName: tên của bảng dữ liệu
• Columns : danh sách các cột
• Rows : danh sách các mẫu tin
• PrimaryKey: danh sách các cột là khóa chính
• NewRow (): tạo một dòng mới (lưu ý dòng mới này chưa thuộc về Rows của table)
Trang 43DataSet - DataRow
n DataRow: đại diện cho mẫu tin trong bảng
q RowState: trạng thái Added, Modified, Deleted,…
q [i]: truy xuất đến cột i
q Delete(): đánh dấu xóa mẫu tin
DataTable
Row
Trang 44string strConn = "data source=.\\SQLEXPRESS; Initial
Catalog=StudentDB; integrated security=yes;";
string strCmd = “SELECT * FROM Sinhvien";
SqlDataAdapter da = new SqlDataAdapter(strCmd, strConn);
SqlCommandBuilder builder = new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds); // da.Fill(ds, “SinhVien”); đặt tên cho bảng là SinhVien
foreach (DataRow dr in ds.Tables[0].Rows)
dr["Ngaysinh"] = DateTime.Now;
da.Update(ds); // phải tạo đối tượng builder cho da
DataSet – Update Row
VD: Cập nhật tất cả các cột với ngày giờ hiện hành
Trang 45…
SqlDataAdapter da = new SqlDataAdapter(strCmd, strConn);
SqlCommandBuilder builder = new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable table = ds.Tables[0];
DataRow[] rows = table.Select("Ngaysinh<'1/1/1980'");
foreach (DataRow r in rows)
r.Delete();
DataSet – Delete Row
Lấy các dòng có ngày sinh trước
1/1/1980
Đánh dấu xóa các
dòng này
Trang 47Data Source Configuration Wizard
n Trong VS.NET 2005 có chức năng Data Source Configuration Wizard
q Nhanh chóng thiết lập Data Source cho project
q Xây dựng form hiển thị và thao tác dữ liệu
n Thông qua thao tác kéo thả từ Data Source
Trang 48Data Source Configuration Wizard
n Tạo một ứng dụng Windows Application
n Trong menu Data | Add New Data Source…
Trang 49Data Source Configuration Wizard
n Tạo New Connection
Trang 50Data Source Configuration Wizard
n Hoàn tất khai báo Data Source
Chuỗi kết nối
Trang 51Data Source Configuration Wizard
n Lưu chuỗi kết nối trong file cấu hình
Tên của chuỗi kết nối
Trang 52Data Source Configuration Wizard
Trang 53Data Source Configuration Wizard
n Wizard sẽ tạo ứng dụng với Data Source
Data Sources Windows
Form in Design View
Trang 54Data Source Configuration Wizard
n Kéo thả binding control vào Form
q Trong cửa sổ Data Source
n Chọn bảng cần sử dụng
q Thiết lập view là DataGridView hay Details
§ Kích chọn vào dấu mũi tên xuống sau tên bảng
Trang 55Data Source Configuration Wizard
n Kéo Table thả vào Form
q Tự động tạo các binding control cho table
Detail
Trang 56Data Source Configuration Wizard
n Bổ sung DataGridView cho Form
q Thay đổi Table sang DataGrid
q Kéo Table trong Data Source thả vào Form
DataGridView
Trang 57Data Source Configuration Wizard
n Kết quả ứng dụng