Beispiel #1
0
        /// <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;
            }
        }
Beispiel #2
0
        /// <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)
 {
 }
 protected override void AddUpdateEventHandlers(IDbDataAdapter dataAdapter, RowUpdatingHandler rowUpdatingHandler, RowUpdatedHandler rowUpdatedHandler)
 {
 }