Nội Dung
ADO.NET
Quá trình phát triển
Đặc điểm ADO.NET
.NET Data Provider
DataSet
Data Source Configuration Wizard
58 trang |
Chia sẻ: phuongt97 | Lượt xem: 411 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng ADO.NET - Nguyễn Văn Phong, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ADO.NETNguyễn Văn Phong1Nội DungADO.NETQuá trình phát triểnĐặc điểm ADO.NET .NET Data ProviderDataSetData Source Configuration Wizard2Giới thiệu ADO.NETActiveX Data Object .NET (ADO.NET)Công nghệ của MSPhát triển từ nền tảng ADOCung 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 ApplicationADO.NET3Giới thiệu ADO.NETMô hình .NET FrameworkMicrosoft .NET FrameworkCommon Language RuntimeBase ClassesWeb ServicesUser InterfaceData and XMLADO.NETXML......4Nội DungADO.NETQuá trình phát triểnĐặc điểm ADO.NET .NET Data ProviderDataSetData Source Configuration Wizard5Quá trình phát triểnNative APIODBCApplicationDatabaseDB APIApplicationODBCDriverDriverDriverDatabaseODBC APIDB API6ADOOLE DBQuá trình phát triểnADO, OLE DBApplicationODBCDriverDriverDriverProviderProviderProviderProviderRelational DataNon-Relational DataOLE: Object Linking and Embedding7Quá trình phát triểnADO.NET8Nội DungADO.NETQuá trình phát triểnĐặc điểm ADO.NET .NET Data ProviderDataSetData Source Configuration Wizard9ADO.NETADO.NET là một phần của .NET FrameworkThư viện lớp có chức năng xử lý dữ liệu trong ngôn ngữ MS.NETADO.NET là dạng “Disconnected”Cho phép lấy cả một cấu trúc phức tạp của DL từ CSDL, sau đó ngắt kết nối rồi mới thực hiện thao tác xử lýTrước đây ADO luôn phải duy trì kết nối trong quá trình thiết kế10ADO.NETADO.NET mạnh mẽKế thừa các ưu điểm của ADO Kết hợp với ý tưởng thiết kế hoàn toàn mớiĐặc điểm nổi bậtThiết kế hoàn toàn dựa vào XMLChuẩn giao tiếp dữ liệu tốt nhất trên môi trường Internet hiện nayThiết kế hoàn toàn hướng đối tượngĐặc trưng của thư viện .NET Framework11ADO.NET vs. ADOĐặc ĐiểmADOADO.NETDL xử lý được đưa vào bộ nhớ dưới dạngRecordset : tương đương 1 bảng dữ liệu trong databaseDataset : tương đương 1 databaseDuyệt dữ liệuRecordset chỉ cho phép duyệt tuần tự, từng dòng một.Dataset : duyệt “tự do, ngẫu nhiên”, truy cập thẳng tới bảng, dòng ,cột mong muốn.Dữ liệu ngắt kết nốiRecordset thiên về hướng kết nối, nên việc hỗ trợ ngắt kết nối không mạnhDataset hỗ trợ hoàn toàn ngắt kết nốiTrao đổi dữ liệu qua InternetKhả năng trao đổi dữ liệu ADO qua Internet thường có nhiều hạn chế. Do dùng chuẩn COMADO.NET trao đổi dữ liệu qua Internet rất dễ dàng vì ADO.NET được thiết kế theo chuẩn XML, là chuẩn dữ liệu chính được sử dụng để trao đổi trên Internet.12Môi trường “connected”Mỗi user có một kết nối cố định tới data sourceƯu điểmMôi trường được bảo vệ tốtKiểm soát được sự đồng bộDữ liệu luôn được mớiNhượcPhải có một kết nối mạng cố địnhScalability13Môi trường “disconnected”Một tập con của dữ liệu trung tâm được sao chép và bổ sung độc lập, sau đó sẽ được merge lại vào dữ liệu trung tâm.Ưu điểmCó thể làm việc bất cứ lúc nào, cũng như có thể kết nối bất kỳ vào Data SourceCho phép user khác có thể kết nốiNâng cao hiệu suất thực hiện của ứng dụngKhuyếtDữ liệu không được cập nhật một cách nhanh nhấtSự tranh chấp có thể xuất hiện và phải giải quyết14ADO.NETKiến trúc của ADO.NET gồm 2 phần chínhPhầ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ácConnection: quản lý việc đóng mở DB???Connection: SqlConnection, OleDbConnectionCommand: lệnh truy vấn, tương tác dữ liệu khi đang lập kết nối???Command: SqlCommand, OleDbCommandDataReader: đọc dữ liệu, chỉ xử lý 1 dòng dữ liệu tại một thời điểm???DataReader: SqlDataReader, OleDbDataReaderDataAdapter: cầu nối giữa DB và DataSet15ADO.NETPhần ngắt kết nối: là DataSetDataSet 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ưDataTableDataRowDataColumnDataRelationCác đối tượng nhóm: DataTableCollection, DataRowCollection, DataColumnCollection 16Mô hình đối tượng ADO.NET17Các lớp thư viện ADO.NETSystem.Data.OleDb: Access, SQL Server, OracleSystem.Data.SqlClient: SQL ServerSystem.Data.OracleClient: OracleĐặc điểm:Cả ba thư viện trên về giao tiếp lập trình là giống nhauDùng thư viện SqlClient truy xuất SQL Server nhanh hơn OleDbTương tự cho OracleClient18Nội DungADO.NETQuá trình phát triểnĐặc điểm ADO.NET .NET Data ProviderDataSetData Source Configuration Wizard19NET Data ProviderMô hình .NET Data Provider20NET Data Provider - ConnectionApplicationDatabaseConnectionThuộc tính & Phương thức ConnectionString: chuỗi kết nối DataSource Open(): thiết lập kết nối đến DS Close(): đóng kết nối với DS21NET Data Provider - ConnectionMô tả CSDL sử dụng minh họaĐặc điểmThông tinDBMSMS SQL Server Express 2005DB 1CSDL StudentDBDB 2CSDL Northwind22NET Data Provider - ConnectionSqlConnection cnn = new SqlConnection();cnn.ConnectionString = “server= .\\SQLEXPRESS; database=Northwind; Trusted_Connection=true”;cnn.Open();//xử lý trong quá trình kết nốicnn.Close(); SQL ConnectionThay bằng “localhost” trong SQL Server 200523NET Data Provider - ConnectionODBC/OLE DB Connection (*)DatabaseMS AccessDriver = {Microsoft Access Driver (*.mdb)}; DBQ = Provider=Microsoft.Jet.OLEDB.4.0; Data Source = SQL ServerDriver = {SQLServer}; Server = ServerName; Database= DatabaseName; Uid=Username; Pwd=Password;Provider= SQLOLEDB; Data Source=ServerName; Initial Catalog=DatabaseName; UserId=Username; Password=Password(*): Xem thêm chuỗi kết nối trong: 24NET Data Provider - ConnectionOleDBConnection cnn = new OleDbSqlConnection();cnn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0; Data Source =Sinhvien.mdb”;cnn.Open();//xử lý trong quá trình kết nốicnn.Close(); OLEDB Connection25NET Data Provider - CommandApplicationDatabaseConnectionCommandThuộc tính & Phương thức Connection: kết nối để thực hiện lệnh CommandText: câu lệnh cần thực hiện CommandType: loại câu lệnh (Text,TableDirect, StoredProc) ExecuteScalar(): thực hiện câu lệnh và trả về giá trị đơn ExecuteNonQuery(): gọi các lệnh SQL, store, trả về số row bị tác động (Insert, Update, Delete) ExecuteReader(): thực hiện lệnh và trả về DataReader26NET Data Provider - CommandSqlConnection cnn = new SqlConnection();cnn.ConnectionString = “server=.\\SQLEXPRESS; database=Northwind; Trusted_connection=true”;SqlCommand cmd = new SqlCommand(“”,cnn);cmd.CommandText = “Select COUNT(*) From Customers”;cnn.Open();int count = (int) cmd.ExecuteScalar();cnn.Close(); SQL Command27NET Data Provider - CommandSqlConnection conn = new SqlConnection();conn.ConnectionString = "Data source=.\\SQLEXPRESS;"+ "Initial Catalog=StudentDB; Integrated security=yes;";SqlCommand cmd = new SqlCommand();cmd.CommandText = "Insert into Sinhvien values(007,'Le Nam','1/1/1980',1,null,null)";cmd.Connection = conn;conn.Open();cmd.ExecuteNonQuery();conn.Close();SQL Command28NET Data Provider - CommandTham số hóa câu lệnhMột câu lệnh được sử dụng nhiều lầncmd.CommandText = "Insert into Sinhvien values(@MS,@HT,@NS,@GT,@DC,@DT)";cmd.Parameters.Add("@MS", SqlDbType.Int);cmd.Parameters.Add("@HT", SqlDbType.NVarChar);cmd.Parameters.Add("@NS",SqlDbType.DateTime);cmd.Parameters.Add("@GT",SqlDbType.Bit);cmd.Parameters.Add("@DC",SqlDbType.NVarChar);cmd.Parameters.Add("@DT",SqlDbType.Int); SQL Command - ParamKhai báo tham sốCâu lệnh được tham số hóa29NET Data Provider - Command cmd.Parameters["@MS"].Value = 999;cmd.Parameters["@HT"].Value = "Nguyen Ha Giang";cmd.Parameters["@NS"].Value = new DateTime(1978,12,4);cmd.Parameters["@GT"].Value = 1;cmd.Parameters["@DC"].Value = “Tan Binh";cmd.Parameters["@DT"].Value = 5120791;conn.Open();int count = (int) cmd.ExecuteNonQuery();conn.Close();SQL Command - ParamTruyền các giá trị của tham số tương ứng30NET Data Provider - DataReaderApplicationDatabaseConnectionCommandDataReaderThuộ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 đọcClose(): đóng Truy xuất tuần tựChỉ đọc dữ liệuCơ chế kết nối31NET Data Provider - DataReaderSqlCommand cmd = new SqlCommand("Select * From Sinhvien", conn);SqlDataReader reader;conn.Open();reader = cmd.ExecuteReader(); while (reader.Read()) listBox1.Items.Add(reader["Hoten"]);reader.Close();conn.Close();DataReader32NET Data Provider - DataAdapterData SourceDataAdapterDataTableDataTableDataSetDataAdapterFillUpdateUpdateFillSelectCommandUpdateCommandSelectCommandUpdateCommand33NET Data Provider - DataAdapterThuộc tính & Phương thức Fill(DataSet): sử dụng SelectCommand lấy dữ liệu từ Data Source đổ vào Data Set Update(DataSet): InsertCommand, UpdateCommand, DeleteCommand cập nhật dữ liệu trong DataSet vào DataSourceDataBaseDataSetDataAdapterFillFillUpdateUpdate34NET Data Provider - DataAdapterstring strConn="Server=.\\SQLEXPRESS; Database=StudentDB; Trusted_connection=true";SqlDataAdapter adapter = new SqlDataAdapter("Select * From Sinhvien",strConn); DataSet ds = new DataSet();adapter.Fill(ds);// thao tác trên datasetadapter.Update(ds);DataAdapter35Nội DungADO.NETQuá trình phát triểnĐặc điểm ADO.NET .NET Data ProviderDataSetData Source Configuration Wizard36DataSetDataSet: là phần cơ sở dữ liệu được lưu trữ trong bộ nhớ (in-memory database)Cơ chế không kết nốiNhờ đối tượng DataAdapter làm trung gianHỗ trợ đầy đủ đặc tính XMLThao tác được với tất cả mô hình lưu trữ hiện tại: flat, relational, hierarchical37DataSet vs. DataReaderSupported by Visual Studio .NET toolsSlower accessForward-onlyBind to one control onlyBased on one SQL statement from one databaseRead-onlyManually codedFaster accessForward and backward scanning of dataBind to multiple controlsIncludes multiple tables from different databasesRead/write access to dataDataReaderDataSetDisconnectedConnected38DataSetCác thành phầnTablesRelationsDataSetTablesDataTableRelationsDataRelationDataRelationDataRow(s)DataColumnConstraint(s)DataTableDataTable39DataSetDataSet .Tables[...].Relations[...]...DataTable .Columns[..].Rows[..]DataTable .Columns[...].Rows[...].DefaultView...DataRowDataRowdataDataColumnschemaDataColumnDataViewDataRelationDataRelation40DataSet - DataTableDataTable: thể hiện một bảng trong CSDLThuộc tính & Phương thức TableName: tên của bảng dữ liệu Columns: danh sách các cột Rows: danh sách các mẫu tin PrimaryKey: danh sách các cột là khóa chính NewRow(): tạo một mẫu tin mới41DataSet - DataColumn DataColumn: đại diện cho một cột trong bảngColumnName: tên cộtDataType: kiểu dữ liệuDataTable Column1Column2Column n42DataSet - DataRowDataRow: đại diện cho mẫu tin trong bảngRowState: trạng thái Added, Modified, Deleted,[i]: truy xuất đến cột iDelete(): đánh dấu xóa mẫu tinDataTable Column1Column2Column nabcxyzomtRow43DataSetstring strConn = "data source=.\\SQLEXPRESS; Initial Catalog=StudentDB; integrated security=yes;";string strCmd = "Select * From Sinhvien";SqlDataAdapter da = new SqlDataAdapter(strCmd, strConn);SqlCommandBuilder builder = new SqlCommandBuilder(da);DataSet ds = new DataSet();da.Fill(ds);foreach (DataRow dr in ds.Tables[0].Rows) dr["Ngaysinh"] = DateTime.Now; da.Update(ds);DataSet – Update Row44DataSetSqlDataAdapter da = new SqlDataAdapter(strCmd, strConn);SqlCommandBuilder builder = new SqlCommandBuilder(da);DataSet ds = new DataSet();da.Fill(ds);DataTable table = ds.Tables[0];DataRow[] rows = table.Select("Ngaysinh<'1/1/1980'");foreach (DataRow r in rows) r.Delete();da.Update(ds);DataSet – Delete Row45Nội DungADO.NETQuá trình phát triểnĐặc điểm ADO.NET .NET Data ProviderDataSetData Source Configuration Wizard46Data Source Configuration WizardTrong VS.NET 2005 có chức năng Data Source Configuration WizardNhanh chóng thiết lập Data Source cho projectXây dựng form hiển thị và thao tác dữ liệuThông qua thao tác kéo thả từ Data Source47Data Source Configuration WizardTạo một ứng dụng Windows ApplicationTrong menu Data | Add New Data Source48Data Source Configuration WizardTạo New Connection49Data Source Configuration WizardHoàn tất khai báo Data SourceChuỗi kết nối50Data Source Configuration WizardLưu chuỗi kết nối trong file cấu hìnhTên của chuỗi kết nối51Data Source Configuration WizardChọn bảng dữ liệuBảng Sinhvien và các fieldTên của DataSet52Data Source Configuration WizardWizard sẽ tạo ứng dụng với Data SourceData Sources WindowsForm in Design View53Data Source Configuration WizardKéo thả binding control vào FormTrong cửa sổ Data SourceChọn bảng cần sử dụngThiết lập view là DataGridView hay DetailsKích chọn vào dấu mũi tên xuống sau tên bảng54Data Source Configuration WizardKéo Table thả vào FormTự động tạo các binding control cho tableDetail55Data Source Configuration WizardBổ sung DataGridView cho FormThay đổi Table sang DataGridKéo Table trong Data Source thả vào FormDataGridView56Data Source Configuration WizardKết quả ứng dụngChưa viết code!57Q&A58
Các file đính kèm theo tài liệu này:
- bai_giang_ado_net_nguyen_van_phong.ppt