Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Disconnected Data Applications: using Datasets, XML and Transactions Overview Adding ADO.NET Objects to and Configuring ADO.NET Objects in a Windows Forms Application Accessing and Modifying Data by Using DataSets Binding Data to Controls Filtering and Sorting Data Resolving Data Conflicts Using Transactions Adding ADO.NET Objects to and Configuring ADO.NET Objects in a Windows Forms Application ADO.NET Objects What Is a DataSet? What Is a Typed DataSet? How to Add ADO.NET Objects to and Configure ADO.NET Objects in a Windows Forms Application Demo: Adding ADO.NET Objects to and Configuring ADO.NET Objects in a Windows Forms Application ADO.NET Objects DataSet DataAdapter DataTable Data Source SelectCommand Fill Update UpdateCommand DataAdapter DataTable SelectCommand Fill Update UpdateCommand Connection What Is a DataSet? Datasets can include multiple DataTables Relationships between tables are represented using DataRelations Constraints enforce primary and foreign keys Use the DataRow and DataColumn to access values in Tables DataColumn DataRow DataTable DataRelation What Is a Typed DataSet? Typed datasets Derive from the base DataSet class Provide type checking at compile time Provide faster access to tables and columns in the dataset Generated from XML Schema (.xsd) files by using the XSD.exe tool To access tables and columns Untyped dataset PubsDataSet.Tables("Titles"); Typed dataset PubsDataSet.Titles; How to Add ADO.NET Objects to and Configure ADO.NET Objects in a Windows Forms Application Drag an OleDbDataAdapter or SqlDataAdapter object from the Toolbox to a form Specify connection and SQL command information Select the adapter or adapters that will be used to transfer data between the data source and the dataset On the Data menu, choose Generate Dataset Select New and then specify a name for the new dataset Demo: Adding ADO.NET Objects to and Configuring ADO.NET Objects in a Windows Forms Application Add and configure a SQLConnection object on a Windows Form Add and configure a SQLDataAdapter control on a Windows Form Generate the dataset Accessing and Modifying Data by Using DataSets How to Populate a Dataset How to Update Data in a Dataset How to Update Data to a Data Source Demo: Populating and Updating DataSets How to Create Database Schema on the Client Demo: Creating Database Schema by Using the XML Schema Designer How to Read and Write XML Data into a DataSet How to Populate a Dataset Use the DataAdapter object to fill the dataset SqlDataAdapter storesSQLDataAdapter; SqlCommand storesSelectSQLCommand; storesSelectSQLCommand.CommandText = "SELECT * FROM stores"; storesSelectSQLCommand.Connection = SqlConnection1; storesSQLDataAdapter.SelectCommand = storesSelectSQLCommand; storesSQLDataAdapter.Fill(storesDataSet.Tables["Stores"]); How to Add a Record to the DataSet Untyped datasets DataRow newDataRow = pubsDataSet.Tables["Titles"].NewRow(); newDataRow["title"] = "New Book"; newDataRow["type"] = "business"; pubsDataSet.Tables["Titles"].Rows.Add(newDataRow); Typed datasets allData.darbiniekiRow dR = allDataSet.darbinieki.AdddarbiniekiRow(“John”,”B”,”[email protected]”,null,”Admin”); Modifying Data in a Table The BeginEdit method of DataRow class EndEdit and CancelEdit methods of DataRow class Disables the raising of events and exceptions Enable the raising of events and exceptions How to modify data in a table Dim drEmployee As DataRow = dtEmployees.Rows(3) drEmployee.BeginEdit() drEmployee("FirstName") = "John" drEmployee("LastName") = "Smith" drEmployee.EndEdit() How to Delete a Record The Remove method of the DataRowCollection class Completely removes the row from the collection Example: dtEmployees.Rows.Remove(drEmployee) The Delete method of the DataRow class Marks the row as deleted Hidden, but still accessible if necessary Example: drEmployee.Delete What Are the RowState and RowVersion Properties? RowState property of a DataRow Added, Deleted, Detached, Modified, Unchanged DataViewRowState enumeration Used with a DataView to filter rows of a certain state CurrentRows, OriginalRows, and so on DataRowVersion enumeration is used when retrieving values using the Item property Current, Default, Original, Proposed HasVersion method of a DataRow AcceptChanges and RejectChanges methods How to Update Data to a Data Source Explicitly specifying the updates SqlCommand insertTitlesCommand = new SqlCommand ("Insert titles (title_id, title, type) values (@title_id,@title,@type)"); insertTitlesCommand.Parameters.Add ("@title_id", SqlDbType.VarChar, 6, "title_id"); insertTitlesCommand.Parameters.Add ("@title", SqlDbType.VarChar, 80, "title"); insertTitlesCommand.Parameters.Add ("@type", SqlDbType.Char, 12, "type"); titlesSQLDataAdapter.InsertCommand = insertTitlesCommand; titlesSQLDataAdapter.Update(pubsDataSet, "titles"); Demo: Populating and Updating DataSets Populate the dataset Update the database Defining Data Relationships Using Foreign Key Constraints to Restrict Actions How to Create a Foreign Key Constraint What Is a DataRelation Object? How to Create a DataRelation Object How to Navigate Related DataTables Using Foreign Key Constraints to Restrict Actions A ForeignKeyConstraint enforces referential integrity If the EnforceConstraints property of a DataSet is True Restricting actions performed in related tables DeleteRule and UpdateRule properties Action Description Cascade Deletes or updates related rows. This is the default. SetNull Sets values in related rows to DBNull. SetDefault Sets values in related rows to the DefaultValue. None No action is taken, but an exception is raised. How to Create a Foreign Key Constraint Use Properties window DataSet must have at least two tables Parent table must have a primary key Add a ForeignKeyConstraint to the child table Choose the matching columns Choose Update and Delete rules Write code What Is a DataRelation Object? Definition A DataRelation object defines a navigational relationship, NOT a constraint relationship Used by presentation objects (for example, a DataGrid) to allow easier navigation (for example, “drill down” capability from parent rows to child rows) Used by expression columns to calculate aggregates A DataSet has a Relations collection How to Create a DataRelation Object Use the Properties window Or, write code dsNorthwind.Relations.Add( _ "FK_CustomersOrders", _ dtCustomers.Columns("CustomerID"), _ dtOrders.Columns("CustomerID"), _ True) ' create a ForeignKeyConstraint too How to Navigate Related DataTables The GetChildRows method of the DataRow Pass a DataRelation name as the parameter Example: Dim drCustomer As DataRow Dim drOrder As DataRow For Each drCustomer In _ dsNorthwind.Tables("Customer").Rows For Each drOrder In drCustomer.GetChildRows( _ "FK_CustomersOrders") ' process row Next Next How to Create Database Schema on the Client XML Schema (.xsd) files enforce data integrity on the client Use the XML Designer to create and modify XML Schema files 1. Determine the schema design 2. On the Project menu, click Add New Item 3. Add the schema 4. Create the schema Demo: Creating and Using Data Relationships In this demonstration, you will see how to create a DataRelation between tables in a DataSet and how to use it in a form. How to Read and Write XML Data into a DataSet Use ReadXML to load data from a file or stream purchaseDataSet.ReadXml ("C:\\sampledata\\PurchaseData.xml", XmlReadMode.IgnoreSchema); Write data and schema information from a DataSet to a file or stream by using the WriteXML method purchaseDataSet.WriteXml ("C:\\sampledata\\CurrentOrders.xml", XmlWriteMode.IgnoreSchema); Binding Data to Controls How to Perform Simple Binding by Using the DataBindings Property How to Perform Complex Data Binding by Using the DataBound Windows Forms Controls How to Maintain the Currency of a Control by Using CurrencyManager Demo: Binding Controls to Data and Maintaining the Currency of a Control by Using CurrencyManager How to Perform Simple Binding by Using the DataBindings Property To use the DataBindings Collection to bind a control to a data source, set the DataBinding property of the control to the data source Property of the control to which data is bound txtCustomerAddress.DataBindings.Add("Text", dsNorthwindData1.Customers, "Address"); txtCustomerCity.DataBindings.Add("Text", dsNorthwindData1.Customers, "City"); Table from the data source Column in the table How to Perform Complex Data Binding by Using the DataBound Windows Forms Controls Complex data binding Bind a control property to a data table Use with combo boxes, list boxes, data grids Can bind controls to DataSets, Arrays, and ArrayLists Complex databinding at design time Set the DataSource and DataMember properties Complex databinding at run time DataGrid1.DataSource = productsDataSet; DataGrid1.DataMember = "Products"; How to Maintain the Currency of a Control by Using CurrencyManager TextBox1 Currency Manager1 TextBox2 Data Source 1 Currency Manager2 Datagrid Data Source 2 CurrencyManager cm; cm = (CurrencyManager)this.BindingContext[pubsDataSet, "Authors"]; cm.Position += 1; Demo: Binding Controls and Maintaining the Currency of a Control by Using CurrencyManager Bind controls to columns in the dataset at design time Bind controls to columns in the dataset at run time maintain the currency of a control by using CurrencyManager Sorting and Filtering How to use the Select method What Is a DataView Object? How to Define a DataView How to Use a DataView at Design Time How to Use the Select Method DataTables have a Select method Gets an array of DataRow objects that match the filter in the order of the sort, and that match the specified state Three optional parameters Filter expression, for example, "City='London'" Sort, for example, "CompanyName ASC" DataViewRowState, for example, Deleted What Is a DataView Object? DataSet DataTable DataTable Connection DataView Stored procedure Database Windows and Web controls Server Data Store How to Define a DataView Creating a DataView by using form controls Creating a DataView programmatically Dim dvProducts As New _ DataView(dsNorthwind.Tables("Products")) dvProducts.Sort = "UnitPrice" dvProducts.RowFilter = "CategoryID > 4" grdProducts.DataSource = dvProducts Applying a DataView to a DataTable dvProducts.Table = _ dsNorthwind.Tables("Products") How to Use a DataView at Design Time DataViews allow sorting and filtering at design time A DataView cannot span multiple DataTables, unlike the View object in SQL Server Use presentation-level objects instead (for example, the DataGrid control, report designers, and so on) Every DataTable has a DefaultView property Demo: Sorting and Filtering data Filter data with a Select method Filter and sort data by using dataview object Configuring a DataAdapter to Update the Underlying Data Source How Does a DataSet Track Changes? What Are the Data Modification Commands? How to Set the Data Modification Commands Using the Data Adapter Configuration Wizard How Does a DataSet Track Changes? Each DataRow has a RowState property Indicates the status of each row Added, Deleted, Detached, Modified, Unchanged The DataSet maintains two copies of data for each row Original version Current version What Are the Data Modification Commands? A SqlDataAdapter or OleDbDataAdapter object has command properties that are themselves command objects that you can use to modify data at the data source InsertCommand UpdateCommand DeleteCommand How to Set the Data Modification Commands Using the Data Adapter Configuration Wizard You can create data modification commands by using the Data Adapter Configuration Wizard The wizard can generate the commands in three different ways: By using SQL statements By creating new stored procedures By using existing stored procedures Persisting Changes to a Data Source How the DataAdapter’s Update Method Modifies the Underlying Data Source When to Use the GetChanges Method of a DataSet Object How to Merge Changes into the DataSet How to Update a Data Source by Using a DataSet How to Accept Changes into the DataSet How the DataAdapter’s Update Method Modifies the Underlying Data Source Determines, which data modification operations have been carried out Executes appropriate commands (insert, update or delete) for each added, modified or deleted row Returns status information for each operation When to Use the GetChanges Method of a DataSet Object Use the GetChanges method when you need to give the changes to another class for use by another object Code example If dsCustomers.HasChanges(DataRowState.Modified) Then Dim dsTemp As DataSet dsTemp = dsCustomers.GetChanges(DataRowState.Modified) DataGrid1.DataSource = dsTemp.Tables(0).DefaultView End If Use the GetChanges method to get a copy of a DataSet that contains all changes made to the DataSet Since it was loaded, or Since the last time the AcceptChanges method was called. How to Merge Changes into the DataSet Use the Merge method to merge two DataSets – an original, and one containing only the changes to the original Code example aDataSet.Merge(anotherDataSet) The two merged DataSets should have similar schemas Lesson: How to Handle Conflicts What Conflicts Can Occur? How to Detect Conflicts How to Resolve Conflicts What Conflicts Can Occur? Disconnected applications use optimistic concurrency Data conflicts can occur when you update the database Releases database locks between data operations Another application or service might have already changed the data Examples Deleting a previously deleted row Changing a previously changed column How to Detect Conflicts The Data Adapter Configuration Wizard can generate SQL statements to detect conflicts When you update the database: Data modification commands compare the current data in the database against your original values Any discrepancies cause a conflict error How to Resolve Conflicts Use the HasErrors property to test for errors Test a DataSet, DataTable, or DataRow Choose one of these strategies to resolve conflicts: “Last in wins” Retain conflicting rows in your DataSet so you can update the database again later Reject conflicting rows and revert to the original values in your DataSet Reject conflicting rows and reload the latest data from the database Demo: How to Update a Data Source by Using a DataSet Configuring the dataadapter using dataadapter wizard Configuring parameters for dataadapter commands – using optimistic concurrency Using GetChanges method Resolving conflicts Using Transactions What Is a Transaction? How to Manage Transactions Using SQL Statements How to Manage Transactions Using ADO.NET What Are Isolation Levels? What Is a Transaction? A transaction is a set of related tasks that either succeed or fail as a unit Two types of transactions Local transactions Distributed transactions How to Manage Transactions Using SQL Statements SQL transaction statements BEGIN TRANS, COMMIT TRANS, ROLLBACK TRANS Code example BEGIN TRANS DECLARE @orderDetailsError int, @productError int DELETE FROM "Order Details" WHERE ProductID=42 SELECT @orderDetailsError = @@ERROR DELETE FROM Products WHERE ProductID=42 SELECT @productError = @@ERROR IF @orderDetailsError = 0 AND @productError = 0 COMMIT TRANS ELSE ROLLBACK TRANS How to Manage Transactions Using ADO.NET XxxConnection – for example, SqlConnection BeginTransaction XxxTransaction – for example, SqlTransaction Commit Rollback What Are Isolation Levels? Examples of concurrency problems Guidelines for setting the isolation level Code example trans = cnNorthwind.BeginTransaction( _ IsolationLevel.Serializable) Support for isolation levels is dependent on which database you use