/// <summary> /// Provider specific code to set up the updating/ed event handlers used by UpdateDataset /// </summary> /// <param name="dataAdapter">DataAdapter to attach the event handlers to</param> /// <param name="rowUpdatingHandler">The handler to be called when a row is updating</param> /// <param name="rowUpdatedHandler">The handler to be called when a row is updated</param> protected override void AddUpdateEventHandlers(IDbDataAdapter dataAdapter, RowUpdatingHandler rowUpdatingHandler, RowUpdatedHandler rowUpdatedHandler) { if (rowUpdatingHandler != null) { m_rowUpdating = rowUpdatingHandler; ((SqlDataAdapter)dataAdapter).RowUpdating += RowUpdating; } if (rowUpdatedHandler != null) { m_rowUpdated = rowUpdatedHandler; ((SqlDataAdapter)dataAdapter).RowUpdated += RowUpdated; } }
/// <summary> /// Provider specific code to set up the updating/ed event handlers used by UpdateDataset /// </summary> /// <param name="dataAdapter">DataAdapter to attach the event handlers to</param> /// <param name="rowUpdatingHandler">The handler to be called when a row is updating</param> /// <param name="rowUpdatedHandler">The handler to be called when a row is updated</param> protected override void AddUpdateEventHandlers(IDbDataAdapter dataAdapter, RowUpdatingHandler rowUpdatingHandler, RowUpdatedHandler rowUpdatedHandler) { if (rowUpdatingHandler != null) { this.m_rowUpdating = rowUpdatingHandler; ((MySqlDataAdapter)dataAdapter).RowUpdating += new MySqlRowUpdatingEventHandler(RowUpdating); } if (rowUpdatedHandler != null) { this.m_rowUpdated = rowUpdatedHandler; ((MySqlDataAdapter)dataAdapter).RowUpdated += new MySqlRowUpdatedEventHandler(RowUpdated); } }
/// <summary> /// Provider specific code to set up the updating/ed event handlers used by UpdateDataset /// </summary> /// <param name="dataAdapter">DataAdapter to attach the event handlers to</param> /// <param name="rowUpdatingHandler">The handler to be called when a row is updating</param> /// <param name="rowUpdatedHandler">The handler to be called when a row is updated</param> protected override void AddUpdateEventHandlers(IDbDataAdapter dataAdapter, RowUpdatingHandler rowUpdatingHandler, RowUpdatedHandler rowUpdatedHandler) { if (rowUpdatingHandler != null) { this.m_rowUpdating = rowUpdatingHandler; ((SqlDataAdapter)dataAdapter).RowUpdating += new SqlRowUpdatingEventHandler(RowUpdating); } if (rowUpdatedHandler != null) { this.m_rowUpdated = rowUpdatedHandler; ((SqlDataAdapter)dataAdapter).RowUpdated += new SqlRowUpdatedEventHandler(RowUpdated); } }
/// <summary> /// Provider specific code to set up the updating/ed event handlers used by UpdateDataset /// </summary> /// <param name="dataAdapter">DataAdapter to attach the event handlers to</param> /// <param name="rowUpdatingHandler">The handler to be called when a row is updating</param> /// <param name="rowUpdatedHandler">The handler to be called when a row is updated</param> protected abstract void AddUpdateEventHandlers(IDbDataAdapter dataAdapter, RowUpdatingHandler rowUpdatingHandler, RowUpdatedHandler rowUpdatedHandler);
/// <summary> /// Executes the IDbCommand for each inserted, updated, or deleted row in the DataSet also implementing RowUpdating and RowUpdated Event Handlers /// </summary> /// <example> /// <code> /// RowUpdatingEventHandler rowUpdatingHandler = new RowUpdatingEventHandler( OnRowUpdating ); /// RowUpdatedEventHandler rowUpdatedHandler = new RowUpdatedEventHandler( OnRowUpdated ); /// helper.UpdateDataSet(sqlInsertCommand, sqlDeleteCommand, sqlUpdateCommand, dataSet, "Order", rowUpdatingHandler, rowUpdatedHandler); /// </code></example> /// <param name="insertCommand">A valid SQL statement or stored procedure to insert new records into the data source</param> /// <param name="deleteCommand">A valid SQL statement or stored procedure to delete records from the data source</param> /// <param name="updateCommand">A valid SQL statement or stored procedure used to update records in the data source</param> /// <param name="dataSet">The DataSet used to update the data source</param> /// <param name="tableName">The DataTable used to update the data source.</param> /// <param name="rowUpdatingHandler">RowUpdatingEventHandler</param> /// <param name="rowUpdatedHandler">RowUpdatedEventHandler</param> public void UpdateDataset(IDbCommand insertCommand, IDbCommand deleteCommand, IDbCommand updateCommand, DataSet dataSet, string tableName, RowUpdatingHandler rowUpdatingHandler, RowUpdatedHandler rowUpdatedHandler) { int rowsAffected = 0; if( tableName == null || tableName.Length == 0 ) throw new ArgumentNullException( "tableName" ); // Create an IDbDataAdapter, and dispose of it after we are done IDbDataAdapter dataAdapter = null; try { bool mustCloseUpdateConnection = false; bool mustCloseInsertConnection = false; bool mustCloseDeleteConnection = false; dataAdapter = GetDataAdapter(); // Set the data adapter commands dataAdapter.UpdateCommand = SetCommand(updateCommand, out mustCloseUpdateConnection); dataAdapter.InsertCommand = SetCommand(insertCommand, out mustCloseInsertConnection); dataAdapter.DeleteCommand = SetCommand(deleteCommand, out mustCloseDeleteConnection); AddUpdateEventHandlers(dataAdapter, rowUpdatingHandler, rowUpdatedHandler); if( dataAdapter is DbDataAdapter ) { // Update the DataSet changes in the data source try { rowsAffected = ((DbDataAdapter)dataAdapter).Update(dataSet, tableName); } catch (Exception ex) { // Don't just throw ex. It changes the call stack. But we want the ex around for debugging, so... Debug.WriteLine(ex); throw; } } else { dataAdapter.TableMappings.Add(tableName, "Table"); // Update the DataSet changes in the data source rowsAffected = dataAdapter.Update (dataSet); } // Commit all the changes made to the DataSet dataSet.Tables[tableName].AcceptChanges(); if (mustCloseUpdateConnection) { updateCommand.Connection.Close(); } if (mustCloseInsertConnection) { insertCommand.Connection.Close(); } if (mustCloseDeleteConnection) { deleteCommand.Connection.Close(); } } finally { IDisposable id = dataAdapter as IDisposable; if( id != null ) id.Dispose(); } }
protected override void AddUpdateEventHandlers(IDbDataAdapter dataAdapter, RowUpdatingHandler rowUpdatingHandler, RowUpdatedHandler rowUpdatedHandler) { }