Bài giảng Lập trình Windows - Chương 5.2: Lấy dữ liệu theo cách Disconnected

Tài liệu Bài giảng Lập trình Windows - Chương 5.2: Lấy dữ liệu theo cách Disconnected: Lập trình Windows Chương 5.2. Lấy dữ liệu theo cách Disconnected1Nội dungKhái niệm DataSetKhái niệm DataAdapterLớp DataAdapterTruy vấn 1 bảngTruy vấn nhiều bảngTruy vấn lược đồ CSDLÁnh xạ - MappingKhái niệm DataSetKhái niệm DataSetLớp DataSetLớp DataTableLớp DataColumnLớp DataRowConstraintsPrimary keyLớp DataRelationDataSet kiểu mạnhKhái niệm DataSetDataSet là gìDataSet là một đối tượng cho phépNạp 1 phần dữ liệu của data source lên bộ nhớLưu trữ dữ liệu theo mô hình quan hệDataSet thuộc kiến trúc DisconnectedDataSet không phụ thuộc vào loại data sourceKhái niệm DataSetCấu trúc cơ bản của lớp DataSetGồm 1 tập các bảng – DataTableGồm 1 tập các quan hệ – DataRelationDataSetDataTableDataTableDataRelationLớp DataSetSơ đồ lớp3 thuộc tính quan trọng trong DataSetTạo đối tượng DataSetMột số thuộc tính/phương thức trong DataSetLớp DataSet Sơ đồ lớpLớp DataSet 3 thuộc tính quan trọng trong DataSetLớp DataSet có 3 collection properties quan trọngTablesRelationsExtendedPropertiesLớp DataSet 3 thu...

pptx86 trang | Chia sẻ: putihuynh11 | Lượt xem: 551 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Bài giảng Lập trình Windows - Chương 5.2: Lấy dữ liệu theo cách Disconnected, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Lập trình Windows Chương 5.2. Lấy dữ liệu theo cách Disconnected1Nội dungKhái niệm DataSetKhái niệm DataAdapterLớp DataAdapterTruy vấn 1 bảngTruy vấn nhiều bảngTruy vấn lược đồ CSDLÁnh xạ - MappingKhái niệm DataSetKhái niệm DataSetLớp DataSetLớp DataTableLớp DataColumnLớp DataRowConstraintsPrimary keyLớp DataRelationDataSet kiểu mạnhKhái niệm DataSetDataSet là gìDataSet là một đối tượng cho phépNạp 1 phần dữ liệu của data source lên bộ nhớLưu trữ dữ liệu theo mô hình quan hệDataSet thuộc kiến trúc DisconnectedDataSet không phụ thuộc vào loại data sourceKhái niệm DataSetCấu trúc cơ bản của lớp DataSetGồm 1 tập các bảng – DataTableGồm 1 tập các quan hệ – DataRelationDataSetDataTableDataTableDataRelationLớp DataSetSơ đồ lớp3 thuộc tính quan trọng trong DataSetTạo đối tượng DataSetMột số thuộc tính/phương thức trong DataSetLớp DataSet Sơ đồ lớpLớp DataSet 3 thuộc tính quan trọng trong DataSetLớp DataSet có 3 collection properties quan trọngTablesRelationsExtendedPropertiesLớp DataSet 3 thuộc tính quan trọng trong DataSetTables propertyLà đối tượng của lớp DataTableCollection, có thể chứa 0 hay nhiều đối tượng DataTableĐối tượng DataTable dùng để lưu trữ 1 tập dữ liệu dạng bảng được trích ra từ Data SourceLớp DataSet 3 thuộc tính quan trọng trong DataSetRelations propertyLà đối tượng của lớp DataRelationCollection, có thể chứa 0 hay nhiều đối tượng DataRelationĐối tượng DataRelation định nghĩa mối quan hệ cha-con giữa 2 bảng dựa vào khóa ngoạiLớp DataSet 3 thuộc tính quan trọng trong DataSetExtendedProperties propertyLà đối tượng của lớp PropertyCollection, có thể chứa 0 hay nhiều đối tượng thuộc tính do người dùng tự định nghĩaThường được dùng để lưu các dữ liệu kèm theo DataSet (vd thời gian DataSet được tạo, )Lớp DataSet Tạo đối tượng DataSetCách 1: Dùng constructorDataSet ds = new DataSet();DataSet ds = new DataSet("TenDataSet");Cách 2: Dựa trên 1 đối tượng DataSet có sẵnNếu không chỉ rõ tên của đối tượng DataSet thì tên này sẽ là “NewDataSet”DataSet ds1; DataSet ds2 = ds1.Clone(); DataSet ds3 = ds1.Copy(); DataSet ds4 = ds1.GetChanges(); DataSet ds5 = ds1.GetChanges(DataRowState.Added);Lớp DataSet Một số thuộc tính/phương thức trong DataSetProperties DataSetNameMethod void Clear()void AcceptChanges()bool HasChanges()bool HasChanges(DataRowState rowStates)void RejectChanges()Lớp DataTableKhái niệm DataTable3 thuộc tính quan trọng trong DataTableTạo đối tượng DataTableThêm đối tượng DataTable vào đối tượng DataSet Một số thuộc tính/phương thức trong DataTableLớp DataTable Khái niệm DataTableDataTable dùng để lưu trữ 1 tập dữ liệu dạng bảng được trích ra từ Data SourceĐặc điểm của DataTable Là trung tâm của kiến trúc ADO.NETCó thể dùng độc lập với DataSetLớp DataTable 3 thuộc tính quan trọng trong DataTableLớp DataTable có 3 collection properties quan trọngColumnsConstraintsRowsCấu trúc của TableLớp DataTable 3 thuộc tính quan trọng trong DataTableColumns propertyLà đối tượng của lớp DataColumnCollection, có thể chứa 0 hay nhiều đối tượng DataColumnĐối tượng DataColumn dùng để định nghĩa các thuộc tính của mỗi cột của bảng (tên cột, kiểu dữ liệu lưu trữ, khóa chính, seed, step)Rows propertyLà đối tượng của lớp DataRowCollection, có thể chứa 0 hay nhiều đối tượng DataRowĐối tượng DataRow chứa dữ liệu thực sự trong DataTableLớp DataTable 3 thuộc tính quan trọng trong DataTableConstraints propertyLà đối tượng của lớp ConstraintCollection, có thể chứa 0 hay nhiều đối tượng ForeignKeyConstraint và/hay UniqueConstraintLớp DataTable Tạo đối tượng DataTableCách 1: Dùng ConstructorDataTable table = new DataTable();DataTable table = new DataTable("TenBang");Cách 2: Vừa tạo bảng vừa thêm vào DataSetDataTable table = tenDS.Tables.Add();DataTable table = tenDS.Tables.Add("TenBang");Cách 3: Dựa trên 1 đối tượng DataTable có sẵnDataTable table = tenTable.Clone();DataTable table = tenTable.Copy();Lớp DataTable Thêm đối tượng DataTable vào DataSettenDS.Tables.Add(tenBang);Lớp DataTable Một số thuộc tính/phương thức trong DataTableThuộc tính string TableNamePhương thức void Clear()void AcceptChanges()void RejectChanges()DataRow[] Select()DataRow[] Select(string filterExp)Lớp DataColumnKhái niệm DataColumnTạo đối tượng DataColumnThêm đối tượng DataColumn vào DataTableMột số thuộc tính/phương thức trong DataColumnLớp DataColumn Khái niệm DataColumnDataColumn dùng để định nghĩa các thuộc tính của mỗi cột của bảng (tên cột, kiểu dữ liệu lưu trữ, khóa chính, seed, step)DataColumn tạo nên cấu trúc của bảng (lược đồ của bảng – schema)Lớp DataColumn Tạo đối tượng DataColumnCách 1: Constructor DataColumn col = new DataColumn(); DataColumn col = new DataColumn(“tenCot”); DataColumn col = new DataColumn(“tenCot”, typeof(kieu)); DataColumn col = new DataColumn(“tenCot”, typeof(kieu), expr);Cách 2: Vừa tạo cột vừa thêm vào bảngDataColumn col = tenBang.Columns.Add(); DataColumn col = tenBang.Columns.Add(“tenCot”); DataColumn col = tenBang.Columns.Add(“tenCot”, typeof(kieu)); DataColumn col = tenBang.Columns.Add(“tenCot”, typeof(kieu), expr);Lớp DataColumn Thêm đối tượng DataColumn vào DataTabletenTable.Columns.Add(tenColumn);Lớp DataColumn Một số thuộc tính/phương thức trong DataColumnThuộc tính bool AllowDBNullbool AutoIncrementlong AutoIncrementSeedlong AutoIncrementStepstring Captionstring ColumnNameType DataTypeobject DefaultValue string Expressionstring MaxLengthbool ReadOnlybool Uniqueint OrdinalPhương thức void SetOrdinal(int ordinal)Lớp DataRowKhi DataTable đã được xây dựng và các DataColumn đã được định nghĩa chúng ta có thể thêm dữ liệu vào bảngThêm dữ liệu vào bảng:Thêm đối tượng DataRow vào DataTable.Rows collection Lớp DataRowCác bước thêm dữ liệu vào DataTableB1: DataRow row=tenBang.NewRow();B2: Thiết lập các giá trị cho đối tượng row row[“tenCot”] = giatri row[index] = giatri row[dataColObject] = giatriB3: tenBang.Rows.Add(row); ConstraintsKhái niệm và phân loạiForeignKeyConstraintUniqueConstraintConstraints Khái niệm và phân loạiKhái niệm Constraints Là những quy tắc (rules) áp dụng cho một cột hay các cột để xác định hành động khi dữ liệu của cột đó bị thay đổiPhân loại constraintsForeignKeyConstraintUniqueConstraintConstraints ForeignKeyConstraintForeignKeyConstraint dùng đểRàng buộc tham chiếu Định nghĩa hành vi cascade (khi giá trị trong cột của bảng cha bị thay đổi hay xóa thì ForeignKeyConstraint sẽ định nghĩa bảng con phản ứng như thế nào)ForeignKeyConstraint fk = new ForeignKeyConstraint(“tenFK”, parentCol, childCol); tenBang.Constraints.Add(fk);Constraints ForeignKeyConstraintĐịnh nghĩa hành vi cascadeDeleteRuleUpdateRulefk.DeleteRule = Rule.Cascade; // default fk.DeleteRule = Rule.SetNull; fk.DeleteRule = Rule.SetDefault; fk.DeleteRule = Rule.None;Constraints UniqueConstraintUniqueConstraint dùng đểĐịnh nghĩa giá trị không được trùng trên 1 cột hay nhiều cột (giá trị duy nhất)ConstraintExceptionNếu nhập giá trị vi phạm ràng buộc thì chương trình sẽ ném ra ngoại lệ ConstraintExceptionUniqueConstraint uc = new UniqueConstraint(DataColumn col); UniqueConstraint uc = new UniqueConstraint(DataColumn[] col); tenBang.Constraints.Add(uc);Primary keyKhóa chính trong DataTableKhóa chính trong DataTable là một mảng các DataColumn được dùng để xác định 1 DataRow duy nhất trong DataTabletenTable.PrimaryKey = new DataColumn[]{col1, col2, };Lớp DataRelationKhái niệm và chức năng của DataRelationTạo đối tượng DataRelationThêm đối tượng DataRelation vào DataSetTruy cập các dòng dữ liệu có liên quanLớp DataRelation Khái niệm và chức năng của DataRelationDataRelation dùng để thiết lập mối quan hệ giữa bảng cha (parent – master) và bảng con (child – detail) dựa trên khóa chung2 chức năng của DataRelationTìm kiếm những dòng dữ liệu liên quan đến dòng dữ liệu đang xử lýThực hiện ràng buộc tham chiếuLớp DataRelation Tạo đối tượng DataRelationTạo đối tượng DataRelationDataRelation r = new DataRelation(“ten”, DataColumn parentCol, DataColumn childCol); DataRelation r = new DataRelation(“ten”, DataColumn[] parentCol, DataColumn[] childCol);Lớp DataRelation Truy cập các dòng dữ liệu có liên quanThêm đối tượng DataRelation vào DataSetDataRelation r; ds.Relations.Add(r);Truy cập các dòng dữ liệu liên quanDataRow[] rows; DataRow row; rows = parentTable.Rows[index].GetChildRows(relation); row = childTable.Rows[index].GetParentRow(relation);DataSet kiểu mạnhGiới thiệu DataSet kiểu mạnhTạo DataSet kiểu mạnh Sử dụngDataSet kiểu mạnh Giới thiệu DataSet kiểu mạnhSo sánh 2 đoạn mãDataSet kiểu yếurow = tenDS.Tables[“bangSV”].Rows[0]; MessageBox.Show(row[“MaSV”]); MessageBox.Show(tenDS.bangSV[0].MaSV); DataSet kiểu mạnhDataSet kiểu mạnh Tạo DataSet kiểu mạnhB1: Tạo DataSet Click phải chuột lên tên Project  Add  New Item: Chọn DataSetDataSet kiểu mạnh Tạo DataSet kiểu mạnhB2: Tạo bảng Kéo DataTable vào Designer DataSet kiểu mạnh Tạo DataSet kiểu mạnhB3: Tạo cột Click phải lên bảng trong designer  Add  ColumnDataSet kiểu mạnh Tạo DataSet kiểu mạnhB4: Tạo khóa chính Chọn các cột  Click phải lên cột  Set Primary Key DataSet kiểu mạnh Tạo DataSet kiểu mạnhB5: Thiết lập quan hệ Kéo Relation từ toolbox vào DesignerDataSet kiểu mạnh Tạo DataSet kiểu mạnhDataSet kiểu mạnh Sử dụngCác lớp dữ liệu được tạo ra trong lớp DataSetXLXeDataSet.NhanVienDataTableXLXeDataSet.XeDataTableXLXeDataSet.PhanCongDataTableXLXeDataSet.NhanVienRowXLXeDataSet.XeRowXLXeDataSet.PhanCongRowDataSet kiểu mạnh Sử dụngTruy cập các đối tượng bảng thông qua propertyXLXeDataSet ds = new XLXeDataSet();ds.Xeds.NhanViends.PhanCongDataSet kiểu mạnh Sử dụngTruy cập các đối tượng dòng thông qua propertyds.Xe[int index] hay ds.Xe.Rows[int index] ds.NhanVien[int index] hay ds.NhanVien.Rows[int index] ds.PhanCong[index] hay ds.PhanCong.Rows[int index] Thêm/Xoá đối tượng dòng: Phương thức Add/Removeds.Xe.AddXeRow(XeRow row)ds.Xe.AddNhanVienRow(NhanVienRow row)ds.Xe.AddPhanCongRow(PhanCongRow row)DataSet kiểu mạnh Sử dụngTruy cập các giá trị thông qua propertyds.NhanVien[i].MaNVds.NhanVien[i].Hods.NhanVien[i].Tends.NhanVien[i].NgayVaoLamLấy những dòng có liên quanDataRow[] rows = ds.NhanVien[i].GetChildRows();DataRow row = ds.NhanVien[i].GetParentRow();Bài tậpDuyệt qua các bảng trong DataSetDuyệt qua các dòng trong DataTableDuyệt qua các cột trong DataTableKhái niệm DataAdapterDataAdapter là 1 đối tượng dùng các đối tượng connected (xxxConnection, xxxCommand) để:Lấy dữ liệu từ data source và lưu vào trong các đối tượng disconnected (DataSet, DataTable)Cập nhật dữ liệu từ các đối tượng disconnected vào data sourceKhái niệm DataAdapterĐặc điểm của DataAdapterDataAdapter là “cầu nối” giữa phần connected và phần disconnected trong ADO.NETDataAdapter được dùng khi DataSet/DataTable cần tương tác với data sourceDataAdapter có thể dùng để lấy dữ liệu từ CSDL và cập nhật dữ liệu vào CSDLKhái niệm DataAdapterData sourceDataAdapterDataTableDataTableDataSetDataAdapterFillUpdateFillUpdateLớp DataAdapterCấu trúc DataAdapterMô hình DataAdapterTạo đối tượng DataAdapterMột số properties và phương thức DataAdapterLớp DataAdapter Cấu trúc DataAdapterDataAdapter gồm có 4 đối tượng Command:SelectCommand InsertCommandUpdateCommandDeleteCommand Lớp DataAdapter Mô hình DataAdaptersp_SELECTXxxCommandSelectCommandUpdateCommandInsertCommandDeleteCommandXxxDataAdapterXxxCommandXxxCommandXxxCommandXxxConnectionsp_UPDATEsp_INSERTsp_DELETEXxxDataReaderLớp DataAdapter Tạo đối tượng DataAdapterSử dụng xxxDataAdapter phụ thuộc vào Data sourceSqlDataAdapterOleDbDataAdapterOracleDataAdapterOdbcDataAdapterLớp DataAdapter Tạo đối tượng DataAdapterSqlDataAdapter da; da = new SqlDataAdapter();da = new SqlDataAdapter(SqlCommand selectCmd);da = new SqlDataAdapter(string selectCmd, SqlConnection conn);da = new SqlDataAdapter(string selectCmd, string strConn);Tạo đối tượng DataAdapter cần 2 thông tinConnectionCommandGán đối tượng Command cho DataAdapterSqlCommand selectCmd;da.SelectCommand = selectCmd;Lớp DataAdapter Một số propertiesSelectCommandInsertCommandUpdateCommandDeleteCommandLớp DataAdapter Một số phương thứcFill (DataTable table)Fill (DataSet ds) Fill (DataSet ds, string srcTable)FillSchema (DataSet ds, SchemaType type)Update (DataSet ds) Update (DataTable table)Truy vấn 1 bảng5 bước cơ bảnBước 1: Tạo đối tượng DataTableBước 2: Tạo đối tượng ConnectionBước 3: Tạo đối tượng Command chứa 1 câu truy vấn SelectBước 4: Tạo đối tượng DataAdapterBước 5: Gọi phương thức Fill Truy vấn 1 bảngDùng đối tượng DataTable để lưu dữ liệu class MyForm : Form { private DataTable svTable; public MyForm() { InitializeComponent(); svTable = new DataTable(); } }Truy vấn 1 bảngTạo đối tượng DataAdapter và lấy dữ liệu private void buttonFillData_Click(object sender, EventArgs e) { string strConn = ; string strSql = “Select ”; SqlConnection conn = new SqlConnection(strConn); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = strSql; SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(svTable); conn.Dispose(); }Truy vấn 1 bảngNhững thao tác thực hiện khi phương thức Fill được gọiMở kết nốiTạo đối tượng DataTable để chứa dữ liệu nếu chưa có bảng đó trong DataSet (tên bảng mặc định là Table, Table1, ... Nếu không chỉ rõ tên bảng trong hàm Fill)Lấy dữ liệu đưa vào DataTableĐóng kết nốiTruy vấn nhiều bảng5 bước cơ bảnBước 1: Tạo đối tượng DataSetBước 2: Tạo đối tượng ConnectionBước 3: Tạo đối tượng Command chứa nhiều câu truy vấn selectBước 4: Tạo đối tượng DataAdapterBước 5: Gọi phương thức FillTruy vấn nhiều bảngDùng đối tượng DataSet để lưu dữ liệu class MyForm : Form { private DataSet dsData; public MyForm() { InitializeComponent(); dsData = new DataSet(); } }Truy vấn nhiều bảngTạo đối tượng DataAdapter và lấy dữ liệu private void buttonFillData_Click(object sender, EventArgs e) { string strConn = ; string strSql = “Select ; Select ”; SqlConnection conn = new SqlConnection(strConn); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = strSql; SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dsData); conn.Dispose(); }Truy vấn nhiều bảngChú ýDataSet có thể chứa nhiều bảngCùng thuộc 1 data sourceThuộc nhiều data source khác nhauTruy vấn nhiều bảng có thể thực hiện bằng cách khác:Truy vấn nhiều lần, mỗi lần 1 bảngKhi gọi da.Fill(dsData);Tên bảng lần lượt được đặt tên là: Table, Table1, Table2, ...Khi gọi da.Fill(dsData, “Name”);Tên bảng lần lược được đặt tên là: Name, Name 1, Name 2, ...Truy vấn lược đồ CSDLVấn đềKhi gọi phương thức Fill nhiều lần trên 1 DataTable/DataSet, dữ liệu sẽ được thêm vào DataTable/DataSet nhiều lần  vi phạm ràng buộc CSDLNguyên doDataAdapter không thể xác định được các dòng trùng lặp do không có thông tin lược đồ (shema) của các DataTables bên trong DataSetTruy vấn lược đồ CSDLCác cách tạo lược đồ Tự viết code, dựa trên các lớp DataColumn, DataRelation, Dùng phương thức FillSchema()Các bước tiến hành như truy vấn 1 bảng/truy vấn nhiều bảngChọn các cột có chứa các ràng buộc (khóa chính, khóa ngoại, duy nhất, )Thay thế phương thức Fill bằng phương thức FillSchemaTruy vấn lược đồ CSDLprivate 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(); }Truy vấn lược đồ CSDLPhương thức FillSchemaFillSchema(DataSet, SchemaType)FillSchema(DataTable, SchemaType)FillSchema(DataSet, SchemaType, String)Ánh xạ - MappingKhái niệm MappingGiải pháp mapping của SQLGiải pháp mapping của ADO.NETÁnh xạ - Mapping Khái niệm MappingThông thường, các tên bảng/cột trong CSDL không phù hợp khi đưa lên ứng dụngĐể thay đổi tên các đối tượng trong CSDL chúng ta dùng kỹ thuật ánh xạ - mapping. Khi đó code của chúng ta có thể sử dụng các đối tượng này theo tên chúng ta đã chọn Có 2 cách mappingSQL: Dùng từ khóa AS của SQL (bí danh)ADO.NET: ADO.NET cung cấp giải pháp mapping thông qua các đối tượng DataTableMapping, DataColumnMapping Ánh xạ - Mapping Giải pháp mapping của SQLDùng từ khóa AS của SQLSelect tenCot as ‘Tên Cột Mới’ From tenBangSelect tenCot as [Tên Cột Mới] From tenBangÁnh xạ - Mapping Giải pháp mapping của SQLHạn chếKhông thể ánh xạ tên bảngGiải phápDùng thuộc tính TableName của DataTable Ánh xạ - Mapping Giải pháp mapping của ADO.NETCơ chế mapping trong ADO.NETKhi Fill dữ liệu vào DataSet, data adapter sẽ kiểm tra thuộc tính TableMappings của data adapter để xác định xem chúng ta có định nghĩa các quy tắc mapping hay không.Nếu TableMappings bằng rỗng (default) thì tên cột trong CSDL được dùng làm tên trong các DataTablesÁnh xạ - Mapping Giải pháp mapping của ADO.NET4 bước thực hiện mappingBước 1: Tạo các đối tượng DataColumnMapping cho từng cột muốn mappingBước 2: Tạo đối tượng DataTableMapping cho bảng muốn mappingBước 3: Thêm các đối tượng DataColumnMapping vào đối tượng DataTableMapping thông qua thuộc tính ColumnMappingsBước 4: Thêm đối tượng DataTableMapping vào DataAdapter thông qua thuộc tính TableMappingsÁnh xạ - Mapping Giải pháp mapping của ADO.NETĐoạn mã tổng quát// Định nghĩa Connection// Định nghĩa Command// Tạo data adapter: daDoDataMapping(da);// Fill vào datasetÁnh xạ - Mapping Giải pháp mapping của ADO.NETprivate void DoDataMapping(SqlDataAdapter da) { // Tạo các DataColumnMapping DataColumnMapping col1 = new DataSolumMapping(“source col”, “dataSet col”); DataColumnMapping col2 = new DataSolumMapping(“source col”, “dataSet col”); // Tạo các DataTableMapping DataTableMapping tb = new DataTableMapping (“source table”, “dataSet table”); // Thêm các DataColumnMapping vào DataTableMapping tb.ColumnMappings.Add(col1); tb.ColumnMappings.Add(col1); // Thêm DataTableMapping vào data adapter da.TableMappings.Add(tb); }Ánh xạ - Mapping Giải pháp mapping của ADO.NETVí dụsinhvien(masv, hoten, tuoi)Đổi tênmasv  mã sinh viênhoten  họ và têntuoi  tuoiTên bảng khi Fill là ‘sinhvien’  sinh viênÁnh xạ - Mapping Giải pháp mapping của ADO.NETstring 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();Ví dụÁnh xạ - Mapping Giải pháp mapping của ADO.NETprivate void DoDataMappings(SqlDataAdapter da) { DataColumnMapping masvCol = new DataColumnMapping("masv","mã sinh viên"); DataColumnMapping hotenCol = new DataColumnMapping("hoten", "họ và 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); }Ánh xạ - Mapping Giải pháp mapping của ADO.NETChú ýNếu chỉ muốn mapping tên bảng thì không cần tạo các đối tượng DataColumnMappingTạo các đối tượng mapping trước khi gọi phương thức FillTên bảng nguồn trong khi tạo đối tượng DataTableMapping phải giống với tên bảng khi Fill. Nếu khi Fill không chỉ tên bảng thì tên bảng sẽ là: Table, Table1, Table2, ... Q&A86

Các file đính kèm theo tài liệu này:

  • pptx_huflit_chuong5_2_laydulieutheocachdisconnected_7064_1985427.pptx