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
Updating Database Two Approaches to Update Database • 1. Using the DataSet object, the updates are first applied to the DataSet then applied to the database using the Adapter object. • 2. Using Command object’s ExecuteNonQuery to run the SQL statements directly on the database. Adding a New Record to a DataTable • A DataTable consists of many rows. Each of these rows is represented by a DataRow object, and is held within the DataTable Rows property. • To add a new row: – Define a DataRow object. – Use DataTable’s NewRow() method to create the new row. – Assign value to fields in the new row. – Use the ADD method of the Rows to add the new row to the DataTable. Code Example dim objNewRow as DataRow objTable=objDataSet.Tables("Cust") objNewRow = objTable.NewRow() objNewRow("cid")=cid.text objNewRow("Cname")=cname.text objNewRow("city")=city.text objNewRow("rating")=rating.text objTable.Rows.Add(objNewRow) Add the New Row to the Data Source • The Adapter object provides two-way interaction between the database and the DataSet. • It has SelectCommand, InsertCommand, DeleteCommand, UpdateCommand properties that hold command objects to run SQL statements. • To initialize these properties, we can: – define a command object( typically for SelectCommand) – use a CommandBuilder object (for other commands) • The Update method of an Adapter object executes commands to update the database. OleDBCommandBuilder • Property: – Adapter • Methods: – GetDeleteCommand – GetInsertCommand – GetUpdateCommand • The commandBuilder uses the Adapter’s SelectCommand to generate Insert, Delete, and Update commands. • Adapter’s InsertCommand, DeleteCommand, UpdateCommand properties generated by the Command Builder object can transfer multiple updates back to the database. Example Using the CommandBuilder dim objBlder=new OleDBCommandBuilder objBlder=new OleDBCommandBuilder(objAdapter) objAdapter.InsertCommand=objBlder.GetInsertCommand() objAdapter.Update(objDataset,"cust") Note: The commandBuilder uses the Adapter’s SelectCommand to generate the Insert command. DataTable’s Select Method • Select(FilterExpression) – Gets an array of all System.Data.DataRow objects that match the filter criteria Select Method Example dim objRows() as DataRow objRows=objTable.select("cid= '" & CidList.selectedItem & "'") cid.text=objRows(0).item("cid") cname.text=objRows(0).item("cname") city.text=objRows(0).item("city") rating.text=objRows(0).item("rating") Modifying An Existing Record • Use Table’s Select method to select the records for change. • Assign new values to selected records. • Apply the update to the database. Modification Example objTable=objDataset.tables("cust") objRows=objTable.select("cname= '" & CnameList.selectedItem.text & "'") objRows(0).item("cid")=cid.text objRows(0).item("cname")=cname.text objRows(0).item("city")=city.text objRows(0).item("rating")=rating.text strSQL = "select * from customer;" dim objAdapter as new OledbDataAdapter(strSQL, objConn) dim objBlder=new OleDBCommandBuilder objBlder=new OleDBCommandBuilder(objAdapter) objAdapter.UpdateCommand=objBlder.GetUpdateCommand() objAdapter.Update(objDataset,"cust") Modification Example 2: Use Table’s Rows Property Example 2: Use Table’s Rows Property Form Load and Next Button Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load cid.Text = objDataSet.Tables("customer").Rows(rowIndex).Item("cid") cname.Text = objDataSet.Tables("customer").Rows(rowIndex).Item("cname") city.Text = objDataSet.Tables("customer").Rows(rowIndex).Item("city") rating.Text = objDataSet.Tables("customer").Rows(rowIndex).Item("rating") End Sub Private Sub NextButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click objDataSet.Tables("customer").Rows(rowIndex).Item("cid") = cid.Text objDataSet.Tables("customer").Rows(rowIndex).Item("cname") = cname.Text objDataSet.Tables("customer").Rows(rowIndex).Item("city") = city.Text objDataSet.Tables("customer").Rows(rowIndex).Item("rating") = rating.Text rowIndex += 1 cid.Text = objDataSet.Tables("customer").Rows(rowIndex).Item("cid") cname.Text = objDataSet.Tables("customer").Rows(rowIndex).Item("cname") city.Text = objDataSet.Tables("customer").Rows(rowIndex).Item("city") rating.Text = objDataSet.Tables("customer").Rows(rowIndex).Item("rating") End Sub Update Button Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\sales2k.mdb" Dim objConn As New OleDbConnection(strConn) Dim strSQLCust As String = "select * from customer;" Dim objAdapter As New OleDbDataAdapter(strSQLCust, objConn) Dim objBlder = New OleDbCommandBuilder() objBlder = New OleDbCommandBuilder(objAdapter) objAdapter.UpdateCommand = objBlder.GetUpdateCommand() objAdapter.Update(objDataSet, "CUSTOMER") End Sub How .NET Keeps Track of Updates in the DataSet • Each column in every row of a table maintains DataRowVersion: – Original: The value in the column when the DataTable was created and filled with data. – Current: The actual column value after changes have been made. • Each row in a table maintains RowState: – – – – Unchanged Added Modified Deleted DataRowVersion Demo – objTable.Rows(0)("rating")="E" – Messagebox.Show("Original rating is: " + objTable.Rows(0)("rating", DataRowVersion.Original)) – Messagebox.Show("New rating is: " + objTable.Rows(0)("rating", DataRowVersion.Current)) RowState Example • DataSet object’s GetChanges method returns a DataSet that contains updated rows. – objModifiedDS=objDataSet.GetChanges(DataRowState.Modified) – objAddedDS= objDataSet.GetChanges(DataRowState.Added) – objDeletedDS= objDataSet.GetChanges(DataRowState.Deleted) • DataTable object’s GetChanges method returns a DataTable that contains updated tows. Deletion • The dataRow’s Delete method changes the RowState to Deleted. • Apply the deletions to the database. Delete Example objTable=objDataset.tables("cust") objRows=objTable.select("cname= '" & CnameList.selectedItem.text & "'") objRows(0).Delete() strConn ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\sales2k.mdb" Dim objConn As New OleDbConnection(strConn) strSQL = "select * from customer;" dim objAdapter as new OledbDataAdapter(strSQL, objConn) dim objBlder=new OleDBCommandBuilder objBlder=new OleDBCommandBuilder(objAdapter) objAdapter.DeleteCommand=objBlder.GetDeleteCommand() objAdapter.Update(objDataset,"cust") Use Table’s Rows with Index Private Sub DeleteButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click objDataSet.Tables("customer").Rows(rowIndex).Delete() rowIndex += 1 End Sub