1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình trên Windows: Chương 5.2 - Trần Minh Thái

86 20 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 86
Dung lượng 774,64 KB

Nội dung

Bài giảng Lập trình trên Windows: Chương 5.2 cung cấp cho người học các kiến thức: Khái niệm DataSet, khái niệm DataAdapter, lớp DataAdapter, truy vấn 1 bảng, truy vấn nhiều bảng, truy vấn lược đồ CSDL, ánh xạ - Mapping.

Lập trình Windows Chương 5.2 Lấy liệu theo cách Disconnected Nội dung • Khái niệm DataSet • Khái niệm DataAdapter • Lớp DataAdapter • Truy vấn bảng • Truy vấn nhiều bảng • Truy vấn lược đồ CSDL • Ánh xạ - Mapping Khái niệm DataSet • Khái niệm DataSet • Lớp DataSet • Lớp DataTable • Lớp DataColumn • Lớp DataRow • Constraints • Primary key • Lớp DataRelation • DataSet kiểu mạnh Khái niệm DataSet • DataSet • DataSet đối tượng cho phép • Nạp phần liệu data source lên nhớ • Lưu trữ liệu theo mơ hình quan hệ • DataSet thuộc kiến trúc Disconnected • DataSet khơng phụ thuộc vào loại data source Khái niệm DataSet • Cấu trúc lớp DataSet • Gồm tập bảng – DataTable • Gồm tập quan hệ – DataRelation DataSet DataTable DataTable DataRelation Lớp DataSet • Sơ đồ lớp • thuộc tính quan trọng DataSet • Tạo đối tượng DataSet • Một số thuộc tính/phương thức DataSet Lớp DataSet Sơ đồ lớp Lớp DataSet thuộc tính quan trọng DataSet • Lớp DataSet có collection properties quan trọng • Tables • Relations • ExtendedProperties Lớp DataSet thuộc tính quan trọng DataSet • Tables property • Là đối tượng lớp DataTableCollection, chứa hay nhiều đối tượng DataTable • Đối tượng DataTable dùng để lưu trữ tập liệu dạng bảng trích từ Data Source Lớp DataSet thuộc tính quan trọng DataSet • Relations property • Là đối tượng lớp DataRelationCollection, chứa hay nhiều đối tượng DataRelation • Đối tượng DataRelation định nghĩa mối quan hệ cha-con bảng dựa vào khóa ngoại 10 Truy vấn lược đồ CSDL private void buttonFillSchema_Click(object sender, EventArgs e) { string strConn = …; string strSql = “Select * from… ; Select * from …”; SqlConnection conn = new SqlConnection(strConn); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = strSql; SqlDataAdapter da = new SqlDataAdapter(cmd); da.FillSchema(dsData, SchemaType.Source); conn.Dispose(); } 72 Truy vấn lược đồ CSDL • Phương thức FillSchema • FillSchema(DataSet, SchemaType) • FillSchema(DataTable, SchemaType) • FillSchema(DataSet, SchemaType, String) 73 Ánh xạ - Mapping • Khái niệm Mapping • Giải pháp mapping SQL • Giải pháp mapping ADO.NET 74 Ánh xạ - Mapping Khái niệm Mapping • Thơng thường, tên bảng/cột CSDL không phù hợp đưa lên ứng dụng • Để thay đổi tên đối tượng CSDL dùng kỹ thuật ánh xạ - mapping Khi code sử dụng đối tượng theo tên chọn • Có cách mapping • SQL: Dùng từ khóa AS SQL (bí danh) • ADO.NET: ADO.NET cung cấp giải pháp mapping thông qua đối tượng DataTableMapping, DataColumnMapping 75 Ánh xạ - Mapping Giải pháp mapping SQL • Dùng từ khóa AS SQL Select tenCot as ‘Tên Cột Mới’ From tenBang … Select tenCot as [Tên Cột Mới] From tenBang … 76 Ánh xạ - Mapping Giải pháp mapping SQL • Hạn chế • Khơng thể ánh xạ tên bảng • Giải pháp • Dùng thuộc tính TableName DataTable 77 Ánh xạ - Mapping Giải pháp mapping ADO.NET • Cơ chế mapping ADO.NET • Khi Fill liệu vào DataSet, data adapter kiểm tra thuộc tính TableMappings data adapter để xác định xem có định nghĩa quy tắc mapping hay khơng • Nếu TableMappings rỗng (default) tên cột CSDL dùng làm tên DataTables 78 Ánh xạ - Mapping Giải pháp mapping ADO.NET • bước thực mapping • Bước 1: Tạo đối tượng DataColumnMapping cho cột muốn mapping • Bước 2: Tạo đối tượng DataTableMapping cho bảng muốn mapping • Bước 3: Thêm đối tượng DataColumnMapping vào đối tượng DataTableMapping thơng qua thuộc tính ColumnMappings • Bước 4: Thêm đối tượng DataTableMapping vào DataAdapter thông qua thuộc tính TableMappings 79 Ánh xạ - Mapping Giải pháp mapping ADO.NET • Đoạn mã tổng quát // Định nghĩa Connection // Định nghĩa Command // Tạo data adapter: da DoDataMapping(da); // Fill vào dataset 80 Ánh xạ - Mapping Giải pháp mapping ADO.NET private void DoDataMapping(SqlDataAdapter da) { // Tạo DataColumnMapping DataColumnMapping col1 = new DataSolumMapping(“source col”, “dataSet col”); DataColumnMapping col2 = new DataSolumMapping(“source col”, “dataSet col”); // Tạo DataTableMapping DataTableMapping tb = new DataTableMapping (“source table”, “dataSet table”); // Thêm DataColumnMapping vào DataTableMapping tb.ColumnMappings.Add(col1); tb.ColumnMappings.Add(col1); // Thêm DataTableMapping vào data adapter da.TableMappings.Add(tb); } 81 Ánh xạ - Mapping Giải pháp mapping ADO.NET • Ví dụ • sinhvien(masv, hoten, tuoi) • Đổi tên • • • • masv  mã sinh viên hoten  họ tên tuoi  tuoi Tên bảng Fill ‘sinhvien’  sinh viên 82 Ánh xạ - Mapping Giải pháp mapping ADO.NET • Ví dụ string strConn = “…"; SqlConnection conn = new SqlConnection(strConn); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "select * from sinhvien"; SqlDataAdapter da = new SqlDataAdapter(cmd); DoDataMappings(da); da.Fill(ds, "sinhvien"); dataGridView.DataSource = ds.Tables[“sinh viên”]; string s; s = (string)ds.Tables[0].Rows[0]["mã sinh viên"]; MessageBox.Show(s); conn.Dispose(); 83 Ánh xạ - Mapping Giải pháp mapping ADO.NET private void DoDataMappings(SqlDataAdapter da) { DataColumnMapping masvCol = new DataColumnMapping("masv","mã sinh viên"); DataColumnMapping hotenCol = new DataColumnMapping("hoten", "họ tên"); DataColumnMapping tuoiCol = new DataColumnMapping("tuoi", "tuổi"); DataTableMapping sinhvienTab = new DataTableMapping("sinhvien", "sinh viên"); sinhvienTab.ColumnMappings.Add(masvCol); sinhvienTab.ColumnMappings.Add(hotenCol); sinhvienTab.ColumnMappings.Add(tuoiCol); da.TableMappings.Add(sinhvienTab); } 84 Ánh xạ - Mapping Giải pháp mapping ADO.NET • Chú ý • Nếu muốn mapping tên bảng khơng cần tạo đối tượng DataColumnMapping • Tạo đối tượng mapping trước gọi phương thức Fill • Tên bảng nguồn tạo đối tượng DataTableMapping phải giống với tên bảng Fill Nếu Fill không tên bảng tên bảng là: Table, Table1, Table2, 85 Q&A 86 86 ... cột hay nhiều cột (giá trị nhất) • ConstraintException • Nếu nhập giá trị vi phạm ràng buộc chương trình ném ngoại lệ ConstraintException UniqueConstraint uc = new UniqueConstraint(DataColumn... DataRelationCollection, chứa hay nhiều đối tượng DataRelation • Đối tượng DataRelation định nghĩa mối quan hệ cha-con bảng dựa vào khóa ngoại 10 Lớp DataSet thuộc tính quan trọng DataSet • ExtendedProperties property... bảng trích từ Data Source • Đặc điểm DataTable • Là trung tâm kiến trúc ADO.NET • Có thể dùng độc lập với DataSet 15 Lớp DataTable thuộc tính quan trọng DataTable • Lớp DataTable có collection properties

Ngày đăng: 08/05/2021, 11:53