Bài giảng Lập trình cơ sở dữ liệu - Chương 4: Sắp xếp, tìm kiếm, lọc dữ liệu

Sắp xếp, tìm kiếm, lọc trong DataTable Lớp DataRelation Lớp DataView Tìm 1 dòng Chọn một số dòng Cột tính toán Hàm nhóm trên cột

ppt24 trang | Chia sẻ: thuongdt324 | Lượt xem: 536 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Lập trình cơ sở dữ liệu - Chương 4: Sắp xếp, tìm kiếm, lọc dữ liệu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
SẮP XẾP, TÌM KIẾM, LỌC DỮ LIỆUChương 4Nội dungSắp xếp, tìm kiếm, lọc trong DataTableLớp DataRelationLớp DataViewSắp xếp, tìm kiếm, lọc trong DataTableTìm 1 dòngChọn một số dòngCột tính toánHàm nhóm trên cộtSắp xếp, tìm kiếm, lọc trong DataTable Tìm 1 dòng“Tìm 1 dòng”: Là lấy thông tin chi tiết của 1 ID hay khóa chính nào đóVí dụ:Tìm thông tin chi tiết của một khách hàng có mã khách hàng cho trước Tìm thông tin chi tiết của hóa đơn có mã hóa đơn cho trước Sắp xếp, tìm kiếm, lọc trong DataTable Tìm 1 dòngDatabase: Thực thi câu lệnh SQLSelect From tenBang Where CotKhoaChinh=giatriDataTable: Dùng phương thức Find của DataTable.Rows (đối tượng của lớp DataRowCollectionSắp xếp, tìm kiếm, lọc trong DataTable Tìm 1 dòngCú pháp phương thức FindDataRow DataRowCollection.Find(object key)Chú ýHàm Find tìm giá trị key chỉ trên cột khóa chính  table phải có khóa chính Để tạo khóa chính:Dùng DataSet có kiểu mạnhDùng hàm FillSchema Tự tạo khóa bằng codeSắp xếp, tìm kiếm, lọc trong DataTable Tìm 1 dòngVí dụmyTable.PrimaryKey = new DataColumn[] { myTable.Columns["CustomerID"] }; string s = "primaryKeyValue"; DataRow foundRow = myTable.Rows.Find(s); if (foundRow != null) MessageBox.Show(foundRow[1].ToString()); else MessageBox.Show("A row with the primary key of " + s + " could not be found");Sắp xếp, tìm kiếm, lọc trong DataTable Tìm 1 dòngDataSet kiểu mạnh: Cung cấp sẵn phương thức FindBy(...)NhanVienDataTable nv; string s = "primaryKeyValue"; NhanVienRow foundRow = nv.FindByMaNV(s); if (foundRow != null) MessageBox.Show(foundRow.MaNV); else MessageBox.Show("A row with the primary key of " + s + " could not be found");Sắp xếp, tìm kiếm, lọc trong DataTable Chọn một số dòng“Chọn một số dòng”: truy vấn 1 số dòng từ 1 bảng cho trước theo 1 điều kiện nào đóDatabase: Thực thi câu lệnh SQLSelect From tenBang Where tenCot=giatriSelect * From NhanVien Where Ten like ‘Ta%’Ví dụ:Sắp xếp, tìm kiếm, lọc trong DataTable Chọn một số dòngDataTable: Dùng phương thức Select của đối tượng DataTableDataRow[] rows = tenBang.Select(); DataRow[] rows = tenBang.Select(string dk); DataRow[] rows = tenBang.Select(string dk, string sort); DataRow[] rows = tenBang.Select(string dk, string sort, DataRowState state);DataRow[] rows = dt.Select("ho like '%Tr%'");DataRow[] rows = dt.Select("ho like '%Tr%'“, “ten asc”);Ví dụSắp xếp, tìm kiếm, lọc trong DataTable Cột tính toán“Cột tính toán”: là cột được sinh ra từ các phép toán trên các cột khácDatabase: Thực thi câu lệnh SQLSelect , cot1 cot2 as TenCot, From tenBang Ví dụSelect ProductID,Price,Tax,(Price+Price*Tax) as TotalPrice From ProductsSắp xếp, tìm kiếm, lọc trong DataTable Cột tính toánDataTable: Chỉ ra expression (biểu thức) cho cột mới (thuộc tính Expression của lớp DataColumn)DataTable table; DataColumn col = new DataColumn(“TenCot”); col.Expression = “bieu thuc”; table.Columns.Add(col);Ví dụDataColumn totalPrice = new DataColumn(“Total Price”); totalPrice.Expression = “Price + Price*Tax”; table.Columns.Add(col);Sắp xếp, tìm kiếm, lọc trong DataTable Cột tính toánChú ýCột tính toán trên DataSet có kiểu làm tương tựĐiều kiện rất quan trọng để cột tính toán có thể hoạt động được là các cột tham gia vào biểu thức phải có kiểu tương ứng với phép toán (các cột mặc định có kiểu string) Dùng DataSet có kiểuChỉ rõ kiểu bằng thuộc tính DataType của lớp DataColumnDataColumn col; col.DataType = typeof(kieu);Sắp xếp, tìm kiếm, lọc trong DataTable Hàm nhóm trên cộtDatabase: Thực thi câu lệnh SQLSelect min() From Select max() From Select avg() From Select count() From Select sum() From Select sum(price) From Products;Sắp xếp, tìm kiếm, lọc trong DataTable Hàm nhóm trên cộtDataTable: Dùng phương thức Compute của lớp DataTableobject table.Compute(“biểu thức”, “bộ lọc”)“biểu thức”: giống mệnh đề select Max(cột)Min(cột)Sum(cột)Count(cột)Avg(cột)“bộ lọc”: giống mệnh đề whereSắp xếp, tìm kiếm, lọc trong DataTable Hàm nhóm trên cộtVí dụ:int p; p = int.Parse(table.Compute(“sum(Price)”, “”);Chú ýDùng lớp Convert hay hàm Parse để chuyển sang kiểu dữ liệu tương ứngint p; p = int.Parse(table.Compute(“sum(Price)”, “Price<100”);Lớp DataRelationDatabaseCho phép tạo quan hệ giữa các bảngCho phép kết (join) giữa các bảngDataTable:Cho phép tạo quan hệ giữa các bảng bằng đối tượng DataRelationKhông cho phép kết (join) giữa các bảngCho phép lấy các “dòng con” của 1 dòngCho phép lấy “dòng cha” của 1 dòngLớp DataRelationLấy các “dòng con” và “dòng cha”DataRow[] rows; DataRow row; rows = parentTable.Rows[index].GetChildRows(relation); row = childTable.Rows[index].GetParentRow(relation);Tạo quan hệ (Chương 5)ds.Relations.Add(new DataRelation());Lớp DataViewKhái niệm DataViewTạo DataViewSắp xếp, tìm kiếm, lọc trong DataViewChuyển DataView thành DataTableLớp DataView Khái niệm DataViewĐối tượng DataView thay thế cho câu lệnh Select của đối tượng DataTableĐặc điểm DataViewDataView có thể binding vào control (Kết quả của câu lệnh Select thì không thể)DataView chỉ cho phép làm việc trên 1 bảng – không cho phép chọn 1 tập con các cộtNếu DataTable gồm có các DataRows thì DataView gồm có các DataRowViewsLớp DataView Tạo DataViewCác cách tạo DataViewDataView vw = new DataView(); DataView vw = new DataView(table);DataView vw = new DataView(table, “ĐKLoc”, “CotSXep”, ĐK RowState);Trong đóĐKLoc: điều kiện lọc dữ liệuCotSXep: Tên cột dùng để sắp xếpĐK RowState: DataViewRowState.Unchanged, Lớp DataView Sắp xếp, tìm kiếm, lọc trong DataViewThuộc tính của DataViewRowFilter: Chỉ ra điều kiện lọc giống câu lệnh Select. Ví dụ: “Ho like ‘Tr%’”Sort: chỉ ra thứ tự sort. Ví dụ: “MaSV asc”Phương thức của DataViewint Find(object): Trả về chỉ số dòng thỏa điều kiện tìm kiếmDataRowView[] FindRows(object hay object[]): Trả về 1 số DataRowView thỏa điểu kiện tìm kiếm Chú ý: 2 Hàm này chỉ tìm kiếm trên các cột được chỉ ra trong thuộc tính Sort của DataViewLớp DataView Chuyển DataView sang DataTableCú phápDataTable vw.ToTable() DataTable vw.ToTable("ten bang") DataTable vw.ToTable(boolean, mảng chuỗi cột) DataTable vw.ToTable("ten bang", boolean, mảng chuỗi cột)Trong đóboolean: true – loại bỏ những dòng trùng lắp (distinct)Tóm tắt chương 4