SlideShare a Scribd company logo
1 of 72
ADO.NET
2
Nội dung trình bày
• Giới thiệu
• .Net Data Provider
• DataSet
• Data Source Configuration Wizard
• Report
• Một số vấn đề trong lập trình CSDL
3
Giới thiệu
• ActiveX Data Object .NET (ADO.NET)
– Công nghệ của MS
– Phát triển từ nền tảng ADO
– 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
4
Giới thiệu
• Mô hình .NET Framework
Microsoft .NET Framework
Common Language Runtime
Base Classes
Web Services User Interface
Data and XML
ADO.NET XML ... ...
5
Giới thiệu
• ADO.NET là một tập các lớp thư viện được sử dụng để
truy xuất dữ liệu
• Chiến lược truy xuất dữ liệu
– Connected Model
– Disconnected Model
Chương trình
CSDL, XML…
Thêm/xóa/sửa dữ liệu
Đọc dữ liệu
6
Giới thiệu
• Connected Model
• Disconnected Model
Chương trình
Chương trình
7
Giới thiệu
• .NET Data Provider
– Dùng để kết nối đến CSDL, thực hiện các câu lệnh, và
nhận kết quả trả về.
– Các loại data provider chính
ADO.NET
ODBC
Application
OLE DB
Oracle
SQL Server
.NET Data Provider
8
Giới thiệu
• .NET Data Provider
– Các thành phần của .NET Data Provider
.NET Data Provider
???Connection
???Command
???DataReader
???DataAdapter
SelectCommand
DeleteCommand
UpdateCommand
InsertCommand
Parameters ???Parameter
9
Giới thiệu
• Kiến trúc của ADO.NET gồm 2 phần chính
• Phần kết nối: sử dụng khi kết nối CSDL và thao tác dữ liệu,
phải thực hiện kết nối khi thao tác
• Connection: quản lý việc đóng mở DB
– ???Connection: SqlConnection, OleDbConnection
• Command: lệnh truy vấn, tương tác dữ liệu khi đang lập
kết nối
– ???Command: SqlCommand, OleDbCommand
• DataReader: đọc dữ liệu, chỉ xử lý 1 dòng dữ liệu tại
một thời điểm
– ???DataReader: SqlDataReader, OleDbDataReader
• DataAdapter: cầu nối giữa DB và DataSet
10
Giới thiệu
• Phần ngắt kết nối: là DataSet
– DataSet không quan tâm đến DB thuộc kiểu gì, và lấy
dữ liệu từ DataAdapter để xử lý
– DataSet xem như một DB trong bộ nhớ: bảng, quan
hệ…
– DataSet có các thành phần con như
• DataTable
• DataRow
• DataColumn
• DataRelation
• Các đối tượng nhóm: DataTableCollection,
DataRowCollection, DataColumnCollection
11
Giới thiệu
Các lớp thư viện
• System.Data.OleDb: Access
• System.Data.SqlClient: SQL Server
• System.Data.OracleClient: Oracle
12
.Net Data Provider
• Kết nối vào CSDL
• Thực hiện lệnh
– Thêm/Xóa/Sửa dữ liệu
– Đọc dữ liệu từ CSDL
13
.Net Data Provider
• Kết nối vào CSDL
– Lớp phụ trách kết nối
• ???Connection
– Thuộc tính quan trọng
• ConnectionString: xác định nguồn dữ liệu cần kết
nối
– Phương thức quan trọng
• Open: mở kết nối
• Close: đóng kết nối
14
.Net Data Provider
• Thư viện System.Data.OleDb: Access
• Kết nối vào CSDL
– Ví dụ: kết nối vào Access
OleDbConnection ketnoi = new OleDbConnection();
string chuoiketnoi=
"Provider=Microsoft.Jet.OleDb.4.0;
Data Source=D:hocsinh.mdb";
ketnoi.ConnectionString =chuoiketnoi;
ketnoi.Open();
//Các lệnh cần thực hiện
ketnoi.Close();
15
.Net Data Provider
• Thư viện System.Data.SqlClient: SQL Server
• Kết nối vào CSDL
– Ví dụ: kết nối vào SQL Server
SqlConnection ketnoi = new SqlConnection();
String chuoiketnoi= "server=tên server;
database=tên CSDL; user=username;
pwd=password";
ketnoi.ConnectionString =chuoiketnoi;
ketnoi.Open();
//Các lệnh cần thực hiện
ketnoi.Close();
16
.Net Data Provider
• Kết nối vào CSDL
– Ví dụ: kết nối vào SQL Server
SqlConnection ketnoi = new SqlConnection();
String chuoiketnoi= "Data Source=.;
Integrated Security=True; Initial Catalog=tên CSDL";
ketnoi.ConnectionString =chuoiketnoi;
ketnoi.Open();
//Các lệnh cần thực hiện
ketnoi.Close();
17
.Net Data Provider
• Thực hiện lệnh
– Các lớp phụ trách
• ???Command
– Thuộc tính quan trọng
• Connection: xác định CSDL sẽ thực hiện thao tác
• CommandText: xác định thao tác cần thực hiện
– Phương thức quan trọng
• ExecuteReader(): phù hợp lệnh Select trả ra 1 bảng dữ
liệu
• ExecuteScalar(): phù hợp lệnh Select trả ra 1 giá trị
• ExecuteNonQuery(): phù hợp lệnh Insert, Delete, Update
18
.Net Data Provider
• Thực hiện lệnh
– Thêm/Xóa/Sửa dữ liệu
Ví dụ:
SqlCommand lenh = new SqlCommand();
lenh.Connection = ketnoi;
lenh.CommandText =
"insert into Hocsinh values(5,'Lê Văn A','227 Nguyễn
Văn Cừ','11/12/2006',5,7)";
lenh.ExecuteNonQuery();
19
.Net Data Provider
• Thực hiện lệnh
Đọc dữ liệu từ CSDL
- Dùng lệnh ExecuteReader hoặc ExecuteScalar
- Lớp ???DataReader
Read
Get???
IsDBNull
BookID BookName Author
1 Book 1 Author 1
2 Book 2 Author 2
3 Book3 Author 3
20
.Net Data Provider
• Thực hiện lệnh
– Đọc dữ liệu từ CSDL
– Ví dụ
OleDbDataReader rd = lenh.ExecuteReader();
while (rd.Read())
{
if (!rd.IsDBNull(3))
Console.WriteLine(rd.GetDateTime(3));
}
21
.Net Data Provider
SelectCommand
UpdateCommand
InsertCommand
DeleteCommand
DataAdapter
Data Source
DataSet
- Fill: dùng SelectCommand lấy dữ liệu từ Data Source
đổ vào DataSet.
- Update: dùng InsertCommand, UpdateCommand và
DeleteCommand cập nhật dữ liệu trong DataSet vào
Data Source.
22
.Net Data Provider
• Thực hiện lệnh
– Đọc dữ liệu từ CSDL
– Xử lý dữ liệu
– Cập nhật dữ liệu xuống CSDL
23
.Net Data Provider
• Đọc dữ liệu từ CSDL
String chuoitruyvan=“select * from HocSinh”;
SqlDataAdapter bodocghi = new SqlDataAdapter(chuoitruyvan, ketnoi);
DataTable bangHocSinh=new DataTable();
bodocghi.Fill(bangHocSinh);
//Hien thi du lieu ra ListBox
for (int i = 0; i < bangHocSinh.Rows.Count; i++)
{
listBox1.Items.Add(bangHocSinh.Rows[i]["HoTen"].ToString());
}
24
.Net Data Provider
//Hien thi du lieu ra ComboBox
ComboBox1.DataSource=bangHocsinh;
ComboBox1.DisplayMember=“TP HienThi”;
ComboBox1.ValueMember=“TP Gia tri”;
//Hien thi du lieu ra DataGridView
DataGridView1.DataSource=bangHocSinh;
//……………
25
.Net Data Provider
• Cập nhật dữ liệu xuống CSDL
SqlCommandBuilder capnhat =
new SqlCommandBuilder(bodocghi);
bodocghi.Update(bangHocSinh);
26
DataSet
Data Source
DataSet
Ánh xạ
27
DataSet
DataSet
.Tables[...]
.Relations[...]
...
DataTable
.Columns[..]
.Rows[..]
DataTable
.Columns[...]
.Rows[...]
.DefaultView
...
DataRow
DataRow
data
DataColumn
schema
DataColumn
DataView
DataRelationDataRelation
28
DataSet
• Cac thuoc tinh:
- Tables: Tập hợp các bảng
- Relations: Tập hợp các quan hệ
- DataSetName: Tên dataset
29
DataSet
• Khởi tạo:
DataSet ds = new DataSet(“tends”);
DataSet ds = new DataSet();
• Thêm 1 bảng vào DataSet
DataTable bang1 = new DataTable(“bang”);
ds.Tables.Add(bang1);
//đọc thêm tài liệu
• Xóa 1 bảng:
ds.Tables.Remove(“bang”);
ds.Tables.RemoveAt(0);
30
DataTable
• DataTable
– TableName: tên bảng.
– Columns: danh sách các cột (DataColumn).
– Rows: danh sách các mẫu tin (DataRow).
– PrimaryKey: danh sách các cột làm khóa chính
(DataColumn).
– NewRow(): tạo một mẫu tin mới.
31
DataTable
• Khai báo:
DataTable bang = new DataTable(“tenb”);
DataTable bang = new DataTable();
32
DataTable
• DataColumn
– ColumnName: tên cột.
– DataType: kiểu dữ liệu cột.
• DataRow
– RowState: trạng thái của mẫu tin (Added,
Modified, Deleted, Unchanged…).
– Toán tử [ i ]: truy xuất đến cột i của mẫu tin.
– Delete(): đánh dấu xóa mẫu tin.
33
DataTable
• Xử lý dữ liệu
– Thêm dữ liệu
DataRow newRow;
newRow=bangHocSinh.NewRow();
newRow[0] = 10;
newRow[1] = "Lê Thị B";
bangHocSinh.Rows.Add(newRow);
34
DataTable
• Xử lý dữ liệu
– Xoá dữ liệu
bangHocSinh.Rows[0].Delete();
– Thay đổi dữ liệu
DataRow row = bangHocSinh.Rows[1];
row.BeginEdit();
row[0] = 11;
row[1] = "Lê Thị C";
row.EndEdit();
35
Ví dụ
string sql = "Select * From Sinhvien";
SqlDataAdapter da = new SqlDataAdapter(sql, ketnoi);
DataSet ds = new DataSet();
da.Fill(ds);
foreach (DataRow dr in ds.Tables[0].Rows)
dr["Ngaysinh"] = DateTime.Now();
SqlCommandBuilder lenh=new SqlCommandBuilder(da);
da.Update(ds);
36
Data Source Configuration Wizard
• Trong VS.NET 2005 có chức năng Data
Source Configuration Wizard
– Nhanh chóng thiết lập Data Source cho project
– Xây dựng form hiển thị và thao tác dữ liệu
• Thông qua thao tác kéo thả từ Data Source
37
Data Source Configuration Wizard
• Tạo một ứng dụng Windows Application
• Trong menu Data | Add New Data
Source…
38
Data Source Configuration Wizard
• Tạo New Connection
39
Data Source Configuration Wizard
• Hoàn tất khai báo Data Source
40
Data Source Configuration Wizard
• Lưu chuỗi kết nối trong file cấu hình
41
Data Source Configuration Wizard
• Chọn bảng dữ liệu
42
Data Source Configuration Wizard
• Wizard sẽ tạo ứng dụng với Data Source
Data Sources Windows
Form in Design View
43
Data Source Configuration Wizard
• Kéo thả binding control vào Form
– Trong cửa sổ Data Source
• Chọn bảng cần sử dụng
– 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
44
Data Source Configuration Wizard
• Kéo Table thả vào Form
– Tự động tạo các binding control cho table
Detail
45
Data Source Configuration Wizard
• Bổ sung DataGridView cho Form
– Thay đổi Table sang DataGrid
– Kéo Table trong Data Source thả vào Form
DataGridView
46
Data Source Configuration Wizard
• Kết quả ứng dụng
47
Crystal Report.Net
• Giới thiệu Crystal Report
• Sử dụng Crystal Report Viewer để hiển thị
báo cáo
48
Giới thiệu Crystal Report
• Tạo báo biểu
49
Giới thiệu Crystal Report
• Chọn “Using the Report Wizard” (Tạo report bằng
Wizard)
50
Giới thiệu Crystal Report
• Chọn “OK”, sau đó chọn Create New Connection để
tạo kết nối mới đến CSDL
51
Giới thiệu Crystal Report
52
Giới thiệu Crystal Report
53
Giới thiệu Crystal Report
• Chọn bảng dữ liệu
54
Giới thiệu Crystal Report
• Chọn các field để hiển thị
55
Giới thiệu Crystal Report
• Chọn group by (nếu cần)
56
Giới thiệu Crystal Report
• Trong bước này cho phép chọn field tính tổng (nếu cần)
57
Giới thiệu Crystal Report
• Chọn Field Filter nếu cần
58
Giới thiệu Crystal Report
• Chọn style report
59
Sử dụng Crystal Report Viewer để
hiển thị báo cáo
60
61
Sử dụng Crystal Report Viewer để
hiển thị báo cáo
• Hiển thị báo cáo
MỘT SỐ VẤN ĐỀ
TRONG LẬP TRÌNH VỚI CSDL
63
• Hệ thống phần mềm có nhiều giao diện xử lý.
• Mỗi giao diện thường kết nối CSDL để truy xuất
dữ liệu.
• Có sự lặp lại trong việc kết nối truy xuất dữ liệu
 đoạn mã xử lý phức tạp và có sự trùng lặp mã
lệnh.
• Vậy phải xử lý như thế nào?
Một số vấn đề trong lập trình với CSDL
64
Một số cách thường sử dụng
• Kết nối dữ liệu tại form chính.
• Tạo lớp kết nối cơ sở dữ liệu dùng chung.
• …….
65
Cách 1
• Các form khác kế thừa phần kết nối từ
form chính.
• Khó sử dụng lại cho các ứng dụng khác.
• ………
66
Cách 2
• Xây dựng lớp kết nối CSDL.
• Gồm các phương thức và thuộc tính.
• Hệ thống sử dụng chung lớp này.
• Có thể sử dụng lại cho hệ thống khác mà không
cần thay đổi nhiều.
67
Xây dựng lớp kết nối
class KetNoiDuLieu
{
private SqlConnection ketnoi;
private SqlCommand lenh;
private SqlDataAdapter bodocghi;
68
Các thuộc tính
public SqlConnection connect
{
get { return ketnoi; }
set { ketnoi = value; }
}
public SqlCommand command
{
get { return lenh; }
set { lenh = value; }
}
public SqlDataAdapter dataAdapter
{
get { return bodocghi; }
set { bodocghi = value; }
}…………..
69
//phương thức kết nối
public KetNoiDuLieu()
{
ketnoi=new SqlConnection();
String chuoiketnoi = "Data Source=.;Integrated
Security=True;Initial Catalog=tên CSDL";
//String chuoiketnoi = "server=tên server;
// database=tên CSDL; user=username;
//pwd=password";
ketnoi.ConnectionString=chuoiketnoi;
}
Các phương thức
70
//phương thức insert/update/delete
public void Thaotacdulieu(string sql)
{
ketnoi.Open();
lenh = new SqlCommand(sql, ketnoi);
lenh.ExecuteNonQuery();
ketnoi.Close();
}
Các phương thức
71
//phương thức truy xuất có trả về giá trị select
public DataTable Truyxuatdulieu(string sql)
{
ketnoi.Open();
bodocghi = new SqlDataAdapter(sql, ketnoi);
DataTable ketqua = new DataTable();
bodocghi.Fill(ketqua);
ketnoi.Close();
return ketqua;
}
………………………….
}
Các phương thức
72
Q&A

More Related Content

What's hot

Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...MasterCode.vn
 
6.adapterset
6.adapterset6.adapterset
6.adaptersetDao Uit
 
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTBài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTMasterCode.vn
 
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...MasterCode.vn
 
Cơ Sở Dữ Liệu - Chương 1
Cơ Sở Dữ Liệu - Chương 1Cơ Sở Dữ Liệu - Chương 1
Cơ Sở Dữ Liệu - Chương 1Nguyễn Trọng
 
Sql server chuong 2 nkhanh
Sql server chuong 2 nkhanhSql server chuong 2 nkhanh
Sql server chuong 2 nkhanhJohn Carter
 
Hadoop, HBase and Zookeeper at Tamtay
Hadoop, HBase and Zookeeper at TamtayHadoop, HBase and Zookeeper at Tamtay
Hadoop, HBase and Zookeeper at TamtayEddie Bui
 
03 chuong 3 - data sets
03   chuong 3 - data sets03   chuong 3 - data sets
03 chuong 3 - data setstruong le hung
 
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...zzsunzz
 
ERD - Database Design
ERD - Database DesignERD - Database Design
ERD - Database Designyht4ever
 
01 sql ddl_commands
01 sql ddl_commands01 sql ddl_commands
01 sql ddl_commandsthai
 
Bài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệuBài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệuMasterCode.vn
 
Dữ liệu không gian trên SQL Server - (Spatial Data in SQL Server)
Dữ liệu không gian trên SQL Server - (Spatial Data in SQL Server)Dữ liệu không gian trên SQL Server - (Spatial Data in SQL Server)
Dữ liệu không gian trên SQL Server - (Spatial Data in SQL Server)Truong Ho
 

What's hot (19)

Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
 
6.adapterset
6.adapterset6.adapterset
6.adapterset
 
ôn tập dbms
ôn tập dbmsôn tập dbms
ôn tập dbms
 
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTBài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
 
Aspnet 3.5 _02
Aspnet 3.5 _02Aspnet 3.5 _02
Aspnet 3.5 _02
 
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...
 
2 co ban ve sql
2 co ban ve sql2 co ban ve sql
2 co ban ve sql
 
Cơ Sở Dữ Liệu - Chương 1
Cơ Sở Dữ Liệu - Chương 1Cơ Sở Dữ Liệu - Chương 1
Cơ Sở Dữ Liệu - Chương 1
 
Com201 slide 6
Com201   slide 6Com201   slide 6
Com201 slide 6
 
Com201 slide 2
Com201   slide 2Com201   slide 2
Com201 slide 2
 
Sql server chuong 2 nkhanh
Sql server chuong 2 nkhanhSql server chuong 2 nkhanh
Sql server chuong 2 nkhanh
 
Hadoop, HBase and Zookeeper at Tamtay
Hadoop, HBase and Zookeeper at TamtayHadoop, HBase and Zookeeper at Tamtay
Hadoop, HBase and Zookeeper at Tamtay
 
03 chuong 3 - data sets
03   chuong 3 - data sets03   chuong 3 - data sets
03 chuong 3 - data sets
 
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...
 
ERD - Database Design
ERD - Database DesignERD - Database Design
ERD - Database Design
 
01 sql ddl_commands
01 sql ddl_commands01 sql ddl_commands
01 sql ddl_commands
 
Hadoop
HadoopHadoop
Hadoop
 
Bài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệuBài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệu
 
Dữ liệu không gian trên SQL Server - (Spatial Data in SQL Server)
Dữ liệu không gian trên SQL Server - (Spatial Data in SQL Server)Dữ liệu không gian trên SQL Server - (Spatial Data in SQL Server)
Dữ liệu không gian trên SQL Server - (Spatial Data in SQL Server)
 

Similar to 04 ado

01 chuong 1 - gioi thieu ado.net va ket noi den csdl
01   chuong 1 - gioi thieu ado.net va ket noi den csdl01   chuong 1 - gioi thieu ado.net va ket noi den csdl
01 chuong 1 - gioi thieu ado.net va ket noi den csdltruong le hung
 
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...MasterCode.vn
 
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theoBài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theoMasterCode.vn
 
Hadoop trong triển khai Big Data
Hadoop trong triển khai Big DataHadoop trong triển khai Big Data
Hadoop trong triển khai Big DataNguyễn Duy Nhân
 
Python Beginner Class day-11-12-13-database
Python Beginner Class day-11-12-13-databasePython Beginner Class day-11-12-13-database
Python Beginner Class day-11-12-13-databaseKhánh Nguyễn
 
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp0104 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01huynhtrong774129
 
04 chuong 4 - sap xep, tim kiem, loc du lieu
04   chuong 4 - sap xep, tim kiem, loc du lieu04   chuong 4 - sap xep, tim kiem, loc du lieu
04 chuong 4 - sap xep, tim kiem, loc du lieutruong le hung
 
BÀI 6: THỰC THI CÁC HOẠT ĐỘNG XỬ LÝ THEO CƠ CHẾ NGẮT KẾT NỐI BẰNG CÁCH SỬ DỤ...
BÀI 6:  THỰC THI CÁC HOẠT ĐỘNG XỬ LÝ THEO CƠ CHẾ NGẮT KẾT NỐI BẰNG CÁCH SỬ DỤ...BÀI 6:  THỰC THI CÁC HOẠT ĐỘNG XỬ LÝ THEO CƠ CHẾ NGẮT KẾT NỐI BẰNG CÁCH SỬ DỤ...
BÀI 6: THỰC THI CÁC HOẠT ĐỘNG XỬ LÝ THEO CƠ CHẾ NGẮT KẾT NỐI BẰNG CÁCH SỬ DỤ...MasterCode.vn
 
Bài 5 : Lập trình thực thi các hoạt động xử lý theo cơ chế ngắt kết nối (Disc...
Bài 5 : Lập trình thực thi các hoạt động xử lý theo cơ chế ngắt kết nối (Disc...Bài 5 : Lập trình thực thi các hoạt động xử lý theo cơ chế ngắt kết nối (Disc...
Bài 5 : Lập trình thực thi các hoạt động xử lý theo cơ chế ngắt kết nối (Disc...MasterCode.vn
 
Giao trinh he quan tri csdl dành cho asp.net
Giao trinh he quan tri csdl dành cho asp.netGiao trinh he quan tri csdl dành cho asp.net
Giao trinh he quan tri csdl dành cho asp.netlove-dalat
 
Linq n hibernate net-tier
Linq n hibernate net-tierLinq n hibernate net-tier
Linq n hibernate net-tierNguyen Tran
 
Gt bt access
Gt bt accessGt bt access
Gt bt accesslam04dt
 

Similar to 04 ado (20)

01 chuong 1 - gioi thieu ado.net va ket noi den csdl
01   chuong 1 - gioi thieu ado.net va ket noi den csdl01   chuong 1 - gioi thieu ado.net va ket noi den csdl
01 chuong 1 - gioi thieu ado.net va ket noi den csdl
 
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
 
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theoBài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
 
ado.net
ado.netado.net
ado.net
 
Data provider
Data providerData provider
Data provider
 
Hadoop trong triển khai Big Data
Hadoop trong triển khai Big DataHadoop trong triển khai Big Data
Hadoop trong triển khai Big Data
 
C# co ban 10
C# co ban 10C# co ban 10
C# co ban 10
 
Python Beginner Class day-11-12-13-database
Python Beginner Class day-11-12-13-databasePython Beginner Class day-11-12-13-database
Python Beginner Class day-11-12-13-database
 
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp0104 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
 
04 chuong 4 - sap xep, tim kiem, loc du lieu
04   chuong 4 - sap xep, tim kiem, loc du lieu04   chuong 4 - sap xep, tim kiem, loc du lieu
04 chuong 4 - sap xep, tim kiem, loc du lieu
 
BÀI 6: THỰC THI CÁC HOẠT ĐỘNG XỬ LÝ THEO CƠ CHẾ NGẮT KẾT NỐI BẰNG CÁCH SỬ DỤ...
BÀI 6:  THỰC THI CÁC HOẠT ĐỘNG XỬ LÝ THEO CƠ CHẾ NGẮT KẾT NỐI BẰNG CÁCH SỬ DỤ...BÀI 6:  THỰC THI CÁC HOẠT ĐỘNG XỬ LÝ THEO CƠ CHẾ NGẮT KẾT NỐI BẰNG CÁCH SỬ DỤ...
BÀI 6: THỰC THI CÁC HOẠT ĐỘNG XỬ LÝ THEO CƠ CHẾ NGẮT KẾT NỐI BẰNG CÁCH SỬ DỤ...
 
Ung dung web chuong 6
Ung dung web  chuong 6Ung dung web  chuong 6
Ung dung web chuong 6
 
Bài 5 : Lập trình thực thi các hoạt động xử lý theo cơ chế ngắt kết nối (Disc...
Bài 5 : Lập trình thực thi các hoạt động xử lý theo cơ chế ngắt kết nối (Disc...Bài 5 : Lập trình thực thi các hoạt động xử lý theo cơ chế ngắt kết nối (Disc...
Bài 5 : Lập trình thực thi các hoạt động xử lý theo cơ chế ngắt kết nối (Disc...
 
Giao trinh he quan tri csdl dành cho asp.net
Giao trinh he quan tri csdl dành cho asp.netGiao trinh he quan tri csdl dành cho asp.net
Giao trinh he quan tri csdl dành cho asp.net
 
IC3 GS4 Access
IC3 GS4 AccessIC3 GS4 Access
IC3 GS4 Access
 
Slide duyetgiang
Slide duyetgiangSlide duyetgiang
Slide duyetgiang
 
01 tong-quan-ado
01 tong-quan-ado01 tong-quan-ado
01 tong-quan-ado
 
Linq n hibernate net-tier
Linq n hibernate net-tierLinq n hibernate net-tier
Linq n hibernate net-tier
 
Access gt bt
Access gt btAccess gt bt
Access gt bt
 
Gt bt access
Gt bt accessGt bt access
Gt bt access
 

04 ado

  • 2. 2 Nội dung trình bày • Giới thiệu • .Net Data Provider • DataSet • Data Source Configuration Wizard • Report • Một số vấn đề trong lập trình CSDL
  • 3. 3 Giới thiệu • ActiveX Data Object .NET (ADO.NET) – Công nghệ của MS – Phát triển từ nền tảng ADO – 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
  • 4. 4 Giới thiệu • Mô hình .NET Framework Microsoft .NET Framework Common Language Runtime Base Classes Web Services User Interface Data and XML ADO.NET XML ... ...
  • 5. 5 Giới thiệu • ADO.NET là một tập các lớp thư viện được sử dụng để truy xuất dữ liệu • Chiến lược truy xuất dữ liệu – Connected Model – Disconnected Model Chương trình CSDL, XML… Thêm/xóa/sửa dữ liệu Đọc dữ liệu
  • 6. 6 Giới thiệu • Connected Model • Disconnected Model Chương trình Chương trình
  • 7. 7 Giới thiệu • .NET Data Provider – Dùng để kết nối đến CSDL, thực hiện các câu lệnh, và nhận kết quả trả về. – Các loại data provider chính ADO.NET ODBC Application OLE DB Oracle SQL Server .NET Data Provider
  • 8. 8 Giới thiệu • .NET Data Provider – Các thành phần của .NET Data Provider .NET Data Provider ???Connection ???Command ???DataReader ???DataAdapter SelectCommand DeleteCommand UpdateCommand InsertCommand Parameters ???Parameter
  • 9. 9 Giới thiệu • Kiến trúc của ADO.NET gồm 2 phần chính • Phần kết nối: sử dụng khi kết nối CSDL và thao tác dữ liệu, phải thực hiện kết nối khi thao tác • Connection: quản lý việc đóng mở DB – ???Connection: SqlConnection, OleDbConnection • Command: lệnh truy vấn, tương tác dữ liệu khi đang lập kết nối – ???Command: SqlCommand, OleDbCommand • DataReader: đọc dữ liệu, chỉ xử lý 1 dòng dữ liệu tại một thời điểm – ???DataReader: SqlDataReader, OleDbDataReader • DataAdapter: cầu nối giữa DB và DataSet
  • 10. 10 Giới thiệu • Phần ngắt kết nối: là DataSet – DataSet không quan tâm đến DB thuộc kiểu gì, và lấy dữ liệu từ DataAdapter để xử lý – DataSet xem như một DB trong bộ nhớ: bảng, quan hệ… – DataSet có các thành phần con như • DataTable • DataRow • DataColumn • DataRelation • Các đối tượng nhóm: DataTableCollection, DataRowCollection, DataColumnCollection
  • 11. 11 Giới thiệu Các lớp thư viện • System.Data.OleDb: Access • System.Data.SqlClient: SQL Server • System.Data.OracleClient: Oracle
  • 12. 12 .Net Data Provider • Kết nối vào CSDL • Thực hiện lệnh – Thêm/Xóa/Sửa dữ liệu – Đọc dữ liệu từ CSDL
  • 13. 13 .Net Data Provider • Kết nối vào CSDL – Lớp phụ trách kết nối • ???Connection – Thuộc tính quan trọng • ConnectionString: xác định nguồn dữ liệu cần kết nối – Phương thức quan trọng • Open: mở kết nối • Close: đóng kết nối
  • 14. 14 .Net Data Provider • Thư viện System.Data.OleDb: Access • Kết nối vào CSDL – Ví dụ: kết nối vào Access OleDbConnection ketnoi = new OleDbConnection(); string chuoiketnoi= "Provider=Microsoft.Jet.OleDb.4.0; Data Source=D:hocsinh.mdb"; ketnoi.ConnectionString =chuoiketnoi; ketnoi.Open(); //Các lệnh cần thực hiện ketnoi.Close();
  • 15. 15 .Net Data Provider • Thư viện System.Data.SqlClient: SQL Server • Kết nối vào CSDL – Ví dụ: kết nối vào SQL Server SqlConnection ketnoi = new SqlConnection(); String chuoiketnoi= "server=tên server; database=tên CSDL; user=username; pwd=password"; ketnoi.ConnectionString =chuoiketnoi; ketnoi.Open(); //Các lệnh cần thực hiện ketnoi.Close();
  • 16. 16 .Net Data Provider • Kết nối vào CSDL – Ví dụ: kết nối vào SQL Server SqlConnection ketnoi = new SqlConnection(); String chuoiketnoi= "Data Source=.; Integrated Security=True; Initial Catalog=tên CSDL"; ketnoi.ConnectionString =chuoiketnoi; ketnoi.Open(); //Các lệnh cần thực hiện ketnoi.Close();
  • 17. 17 .Net Data Provider • Thực hiện lệnh – Các lớp phụ trách • ???Command – Thuộc tính quan trọng • Connection: xác định CSDL sẽ thực hiện thao tác • CommandText: xác định thao tác cần thực hiện – Phương thức quan trọng • ExecuteReader(): phù hợp lệnh Select trả ra 1 bảng dữ liệu • ExecuteScalar(): phù hợp lệnh Select trả ra 1 giá trị • ExecuteNonQuery(): phù hợp lệnh Insert, Delete, Update
  • 18. 18 .Net Data Provider • Thực hiện lệnh – Thêm/Xóa/Sửa dữ liệu Ví dụ: SqlCommand lenh = new SqlCommand(); lenh.Connection = ketnoi; lenh.CommandText = "insert into Hocsinh values(5,'Lê Văn A','227 Nguyễn Văn Cừ','11/12/2006',5,7)"; lenh.ExecuteNonQuery();
  • 19. 19 .Net Data Provider • Thực hiện lệnh Đọc dữ liệu từ CSDL - Dùng lệnh ExecuteReader hoặc ExecuteScalar - Lớp ???DataReader Read Get??? IsDBNull BookID BookName Author 1 Book 1 Author 1 2 Book 2 Author 2 3 Book3 Author 3
  • 20. 20 .Net Data Provider • Thực hiện lệnh – Đọc dữ liệu từ CSDL – Ví dụ OleDbDataReader rd = lenh.ExecuteReader(); while (rd.Read()) { if (!rd.IsDBNull(3)) Console.WriteLine(rd.GetDateTime(3)); }
  • 21. 21 .Net Data Provider SelectCommand UpdateCommand InsertCommand DeleteCommand DataAdapter Data Source DataSet - Fill: dùng SelectCommand lấy dữ liệu từ Data Source đổ vào DataSet. - Update: dùng InsertCommand, UpdateCommand và DeleteCommand cập nhật dữ liệu trong DataSet vào Data Source.
  • 22. 22 .Net Data Provider • Thực hiện lệnh – Đọc dữ liệu từ CSDL – Xử lý dữ liệu – Cập nhật dữ liệu xuống CSDL
  • 23. 23 .Net Data Provider • Đọc dữ liệu từ CSDL String chuoitruyvan=“select * from HocSinh”; SqlDataAdapter bodocghi = new SqlDataAdapter(chuoitruyvan, ketnoi); DataTable bangHocSinh=new DataTable(); bodocghi.Fill(bangHocSinh); //Hien thi du lieu ra ListBox for (int i = 0; i < bangHocSinh.Rows.Count; i++) { listBox1.Items.Add(bangHocSinh.Rows[i]["HoTen"].ToString()); }
  • 24. 24 .Net Data Provider //Hien thi du lieu ra ComboBox ComboBox1.DataSource=bangHocsinh; ComboBox1.DisplayMember=“TP HienThi”; ComboBox1.ValueMember=“TP Gia tri”; //Hien thi du lieu ra DataGridView DataGridView1.DataSource=bangHocSinh; //……………
  • 25. 25 .Net Data Provider • Cập nhật dữ liệu xuống CSDL SqlCommandBuilder capnhat = new SqlCommandBuilder(bodocghi); bodocghi.Update(bangHocSinh);
  • 28. 28 DataSet • Cac thuoc tinh: - Tables: Tập hợp các bảng - Relations: Tập hợp các quan hệ - DataSetName: Tên dataset
  • 29. 29 DataSet • Khởi tạo: DataSet ds = new DataSet(“tends”); DataSet ds = new DataSet(); • Thêm 1 bảng vào DataSet DataTable bang1 = new DataTable(“bang”); ds.Tables.Add(bang1); //đọc thêm tài liệu • Xóa 1 bảng: ds.Tables.Remove(“bang”); ds.Tables.RemoveAt(0);
  • 30. 30 DataTable • DataTable – TableName: tên bảng. – Columns: danh sách các cột (DataColumn). – Rows: danh sách các mẫu tin (DataRow). – PrimaryKey: danh sách các cột làm khóa chính (DataColumn). – NewRow(): tạo một mẫu tin mới.
  • 31. 31 DataTable • Khai báo: DataTable bang = new DataTable(“tenb”); DataTable bang = new DataTable();
  • 32. 32 DataTable • DataColumn – ColumnName: tên cột. – DataType: kiểu dữ liệu cột. • DataRow – RowState: trạng thái của mẫu tin (Added, Modified, Deleted, Unchanged…). – Toán tử [ i ]: truy xuất đến cột i của mẫu tin. – Delete(): đánh dấu xóa mẫu tin.
  • 33. 33 DataTable • Xử lý dữ liệu – Thêm dữ liệu DataRow newRow; newRow=bangHocSinh.NewRow(); newRow[0] = 10; newRow[1] = "Lê Thị B"; bangHocSinh.Rows.Add(newRow);
  • 34. 34 DataTable • Xử lý dữ liệu – Xoá dữ liệu bangHocSinh.Rows[0].Delete(); – Thay đổi dữ liệu DataRow row = bangHocSinh.Rows[1]; row.BeginEdit(); row[0] = 11; row[1] = "Lê Thị C"; row.EndEdit();
  • 35. 35 Ví dụ string sql = "Select * From Sinhvien"; SqlDataAdapter da = new SqlDataAdapter(sql, ketnoi); DataSet ds = new DataSet(); da.Fill(ds); foreach (DataRow dr in ds.Tables[0].Rows) dr["Ngaysinh"] = DateTime.Now(); SqlCommandBuilder lenh=new SqlCommandBuilder(da); da.Update(ds);
  • 36. 36 Data Source Configuration Wizard • Trong VS.NET 2005 có chức năng Data Source Configuration Wizard – Nhanh chóng thiết lập Data Source cho project – Xây dựng form hiển thị và thao tác dữ liệu • Thông qua thao tác kéo thả từ Data Source
  • 37. 37 Data Source Configuration Wizard • Tạo một ứng dụng Windows Application • Trong menu Data | Add New Data Source…
  • 38. 38 Data Source Configuration Wizard • Tạo New Connection
  • 39. 39 Data Source Configuration Wizard • Hoàn tất khai báo Data Source
  • 40. 40 Data Source Configuration Wizard • Lưu chuỗi kết nối trong file cấu hình
  • 41. 41 Data Source Configuration Wizard • Chọn bảng dữ liệu
  • 42. 42 Data Source Configuration Wizard • Wizard sẽ tạo ứng dụng với Data Source Data Sources Windows Form in Design View
  • 43. 43 Data Source Configuration Wizard • Kéo thả binding control vào Form – Trong cửa sổ Data Source • Chọn bảng cần sử dụng – 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
  • 44. 44 Data Source Configuration Wizard • Kéo Table thả vào Form – Tự động tạo các binding control cho table Detail
  • 45. 45 Data Source Configuration Wizard • Bổ sung DataGridView cho Form – Thay đổi Table sang DataGrid – Kéo Table trong Data Source thả vào Form DataGridView
  • 46. 46 Data Source Configuration Wizard • Kết quả ứng dụng
  • 47. 47 Crystal Report.Net • Giới thiệu Crystal Report • Sử dụng Crystal Report Viewer để hiển thị báo cáo
  • 48. 48 Giới thiệu Crystal Report • Tạo báo biểu
  • 49. 49 Giới thiệu Crystal Report • Chọn “Using the Report Wizard” (Tạo report bằng Wizard)
  • 50. 50 Giới thiệu Crystal Report • Chọn “OK”, sau đó chọn Create New Connection để tạo kết nối mới đến CSDL
  • 53. 53 Giới thiệu Crystal Report • Chọn bảng dữ liệu
  • 54. 54 Giới thiệu Crystal Report • Chọn các field để hiển thị
  • 55. 55 Giới thiệu Crystal Report • Chọn group by (nếu cần)
  • 56. 56 Giới thiệu Crystal Report • Trong bước này cho phép chọn field tính tổng (nếu cần)
  • 57. 57 Giới thiệu Crystal Report • Chọn Field Filter nếu cần
  • 58. 58 Giới thiệu Crystal Report • Chọn style report
  • 59. 59 Sử dụng Crystal Report Viewer để hiển thị báo cáo
  • 60. 60
  • 61. 61 Sử dụng Crystal Report Viewer để hiển thị báo cáo • Hiển thị báo cáo
  • 62. MỘT SỐ VẤN ĐỀ TRONG LẬP TRÌNH VỚI CSDL
  • 63. 63 • Hệ thống phần mềm có nhiều giao diện xử lý. • Mỗi giao diện thường kết nối CSDL để truy xuất dữ liệu. • Có sự lặp lại trong việc kết nối truy xuất dữ liệu  đoạn mã xử lý phức tạp và có sự trùng lặp mã lệnh. • Vậy phải xử lý như thế nào? Một số vấn đề trong lập trình với CSDL
  • 64. 64 Một số cách thường sử dụng • Kết nối dữ liệu tại form chính. • Tạo lớp kết nối cơ sở dữ liệu dùng chung. • …….
  • 65. 65 Cách 1 • Các form khác kế thừa phần kết nối từ form chính. • Khó sử dụng lại cho các ứng dụng khác. • ………
  • 66. 66 Cách 2 • Xây dựng lớp kết nối CSDL. • Gồm các phương thức và thuộc tính. • Hệ thống sử dụng chung lớp này. • Có thể sử dụng lại cho hệ thống khác mà không cần thay đổi nhiều.
  • 67. 67 Xây dựng lớp kết nối class KetNoiDuLieu { private SqlConnection ketnoi; private SqlCommand lenh; private SqlDataAdapter bodocghi;
  • 68. 68 Các thuộc tính public SqlConnection connect { get { return ketnoi; } set { ketnoi = value; } } public SqlCommand command { get { return lenh; } set { lenh = value; } } public SqlDataAdapter dataAdapter { get { return bodocghi; } set { bodocghi = value; } }…………..
  • 69. 69 //phương thức kết nối public KetNoiDuLieu() { ketnoi=new SqlConnection(); String chuoiketnoi = "Data Source=.;Integrated Security=True;Initial Catalog=tên CSDL"; //String chuoiketnoi = "server=tên server; // database=tên CSDL; user=username; //pwd=password"; ketnoi.ConnectionString=chuoiketnoi; } Các phương thức
  • 70. 70 //phương thức insert/update/delete public void Thaotacdulieu(string sql) { ketnoi.Open(); lenh = new SqlCommand(sql, ketnoi); lenh.ExecuteNonQuery(); ketnoi.Close(); } Các phương thức
  • 71. 71 //phương thức truy xuất có trả về giá trị select public DataTable Truyxuatdulieu(string sql) { ketnoi.Open(); bodocghi = new SqlDataAdapter(sql, ketnoi); DataTable ketqua = new DataTable(); bodocghi.Fill(ketqua); ketnoi.Close(); return ketqua; } …………………………. } Các phương thức