TRƯỜNG ĐẠI HỌC NHA TRANG
LẬP TRÌNH CƠ SỞ DỮ LIỆU VỚI C#
CHỦ ĐỀ 4
LƯU TRỮ, XỬ LÝ VÀ TRÌNH BÀY DỮ LIỆU
1
NỘI DUNG:
Các hệ quản trị cơ sở dữ liệu phổ biến
ADO.NET
DataSet
Trình bày dữ liệu
2
NỘI DUNG:
Các hệ quản trị cơ sở dữ liệu phổ biến
ADO.NET
DataSet
Trình bày dữ liệu
3
Các hệ quản trị cơ sở dữ liệu phổ biến:
- SQL Server
- MySQL
- Oracle
- DB2
- …
4
NỘI DUNG:
Các hệ quản trị cơ sở dữ liệu phổ biến
ADO.NET
DataSet
Trình bày dữ liệu
5
ADO.NET:
- 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
ADO.NET
.NET Application
6
ADO.NET:
- 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
Command: lệnh truy vấn, tương tác dữ liệu khi đang lập kết nối
DataReader: đọc dữ liệu, chỉ xử lý 1 dòng dữ liệu tại một thời điểm
DataAdapter: cầu nối giữa DB và DataSet
7
ADO.NET:
- Phần ngắt kết nối: là DataSet, DataSet xem như một DB trong bộ nhớ:
bảng, quan hệ…
- DataSet có các thành phần:
DataTable
DataRow
DataColumn
DataRelation
Các đối tượng nhóm:
DataColumnCollection
DataTableCollection,
DataRowCollection,
8
Mô hình đối tượng ADO.NET:
9
ADO.NET:
- Là mô hình cho phép thao tác với nhiều loại CSDL.
- Ứng với mỗi loại CSDL sẽ là một .NET Framework Data Provider thích
hợp.
10
Mô hình .NET Provider:
11
Các đối tượng của ADO.NET:
12
Đối tượng Connection:
- Thuộc tính:
ConnectionString: chuỗi kết nối DataSource (DS)
- Phương thức:
Open(): thiết lập kết nối đến DS
Close(): đóng kết nối với DS
13
Đối tượng Connection:
- Cách 1:
SqlConnection DbCon = new SqlConnection();
DbCon.ConnectionString = @“server= .\SQLEXPRESS;
database=QLBH; Trusted_Connection=true”;
DbCon.Open();//mở kết nối
//xử lý trong quá trình kết nối
…
DbCon.Close(); //đóng kết nối
14
Đối tượng Connection
- Cách 2:
string ConString=@“server= .\SQLEXPRESS; database=QLBH;
Trusted_Connection=true”;
SqlConnection DbCon = new SqlConnection(ConString);
DbCon.Open();
//xử lý trong quá trình kết nối
…
DbCon.Close();
Đặt chuỗi kết nối dung chung:
1. R_Click vào Project->properties->Settings
Name: đặt tên chuỗi kết nối
Type: Connection String
Scope: Application
Value:”server=(local);database=QLD_SV;integrated security=true”
2.Program.cs: đặt một biến tĩnh
public static string Qlconstring =tên project. .Properties.Settings.Default.tên chuỗi kết nối;
15
Đối tượng Command:
- Thuộc tính:
Connection: kết nối để thực hiện lệnh
CommandText: câu lệnh cần thực hiện (tên bảng, câu lệnh
SQL, tên StoredProcedure)
CommandType: loại câu lệnh (Text, TableDirect, StoredProc)
Parameters: tập tham số dùng trong StoredProc
16
Đối tượng Command:
- Phương thức:
ExecuteScalar(): thực hiện câu lệnh và trả về giá trị đơn.
ExecuteNonQuery(): gọi các lệnh SQL, StoredProc, trả về số
row bị tác động (Insert, Update, Delete)
ExecuteReader(): thực hiện lệnh và trả về DataReader
17
Đối tượng Command:
- Đếm số sản phẩm trong bảng SanPham:
public int CountSP()
{
SqlConnection con = new
SqlConnection(Program.BHConString);
con.Open();
SqlCommand cmd = new SqlCommand("select count(*) from
SANPHAM");
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
int count=(int)cmd.ExecuteScalar();
con.Close();
return count;
}
18
Đối tượng Command:
- Thuộc tính Parameters
- Ví dụ: Tìm mã sản phẩm trong bảng SanPham
public string SelectSP(string ma)
{ string id;
SqlConnection con = new
SqlConnection(Program.BHConString);
con.Open();
SqlCommand cmd = new SqlCommand("sanpham_Select");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
cmd.Parameters.Add("@Masp", ma);
id = (string)cmd.ExecuteScalar();
con.Close();
return id;
}
19
Đối tượng Command:
- Thuộc tính Parameters
- Ví dụ: Tìm mã sản phẩm trong bảng SanPham
CREATE PROCEDURE SanPham_Select
@masp nvarchar(5)
AS
BEGIN
SELECT * from SANPHAM where masp=@masp
END
20
Đối tượng Command:
- Thêm một sản phẩm mới dùng SQL
public void InsertSQL()
{ mở
ở kếế
t nốế
i CSDL
string cmdString = "Insert into SANPHAM (masp, tensp,
donvitinh, dongian) values ('MH111','Màn
hình','cái',760)";
SqlCommand cmd = new SqlCommand(cmdString);
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
cmd.ExecuteNonQuery();
đóng kếế
t nốế
i CSDL
}
21
Đối tượng Command:
- Thêm sản phẩm mới dùng StoredProc có tham số
public void InsertDb(Sanpham sp)
{ mở
ở kếế
t nốế
i CSDL
SqlCommand cmd = new SqlCommand("SANPHAM_Insert");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
cmd.Parameters.Add("@Masp", sp.masp);
cmd.Parameters.Add("@Tensp", sp.tensp );
cmd.Parameters.Add("@Donvitinh", sp.dvt );
cmd.Parameters.Add("@Dongia", sp.gianhap );
cmd.Parameters.Add("@Hinhanh",
SqlDbType.VarBinary).Value=ByteArray(sp.hinhanh );
cmd.ExecuteNonQuery();
đóng kếế
t nốế
i CSDL
}
22
Đối tượng Command:
- StroredProcedure:
CREATE PROCEDURE SanPham_Insert
@MaSP nvarchar(5),
@TenSP nvarchar(50),
@Donvitinh nvarchar(20),
@Dongia decimal(18,0),
@HinhAnh varbinary(max)
AS
BEGIN
insert into SANPHAM(MaSP,TenSP,Donvitinh,DongiaN,
HinhAnh)
values(@MaSP,@TenSP,@Donvitinh,@Dongia, @HinhAnh)
END
23
Đối tượng DataReader:
DataReader
Connection
Command
Application
Database
- Truy xuất tuần tự, chỉ đọc dữ liệu
- 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
24
Đối tượng DataReader:
public List<Sanpham> SelectAll()
{
List<Sanpham> lsSanpham = new List<Sanpham>();
Mở
ở kếế
t nốế
i CSDL
SqlCommand cmd = new SqlCommand(“Sanpham_SelectAll");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
SqlDataReader dr =
cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (dr.Read())
{ Sanpham sp = new Sanpham();
sp.masp = (string)dr["masp"];
...
lsSanpham.Add(sp);
}
dr.Close();
return lsSanpham;
}
25