示例#1
0
        public DeleteDefinitionState DeleteDefinition(int definitionID)
        {
            using (SqlConnection sqlConnection = new SqlConnection(con))
            {
                DeleteDefinitionState state = DeleteDefinitionState.Success;
                sqlConnection.Open();
                SqlCommand     command     = sqlConnection.CreateCommand();
                SqlTransaction transaction = sqlConnection.BeginTransaction("DeleteDescriptor");

                command.Connection  = sqlConnection;
                command.Transaction = transaction;


                try
                {
                    command.Parameters.AddWithValue("ID", definitionID);

                    command.CommandText =
                        "select count(descriptor_id) from definitions " +
                        "where descriptor_id = (select descriptor_id from definitions where ID = @ID)";
                    double count = (double)command.ExecuteScalar();
                    if (count == 1)
                    {
                        command.CommandText =
                            "Delete from Descriptors where id = (select descriptor_id from definitions where ID = @ID); " +
                            "Delete from Ascriptors where descriptor_id = (select descriptor_id from definitions where ID = @ID); ";
                        command.ExecuteNonQuery();
                        state = DeleteDefinitionState.DeletedWithDescriptor;
                    }

                    command.CommandText =
                        "Delete from DefinitionLinks where definition_id=@definition_id; " +
                        "Delete from Definitions where ID = @definition_id ";
                    command.ExecuteNonQuery();
                    transaction.Commit();
                    return(state);
                }
                catch (Exception)
                {
                    try
                    {
                        transaction.Rollback();
                    }
                    catch (Exception)
                    {
                    }
                    return(DeleteDefinitionState.DataError);
                }
                finally
                {
                    sqlConnection.Close();
                }
            }
        }
示例#2
0
        private void DeleteDefinitionButton_Click(object sender, EventArgs e)
        {
            DeleteDefinitionState state = db.DeleteDefinition(CheckedItem.definitionId);

            if (state == DeleteDefinitionState.Success)
            {
                MessageBox.Show("Определение удалено");
            }
            else if (state == DeleteDefinitionState.DeletedWithDescriptor)
            {
                MessageBox.Show("Определение и соответсвующий термин удалены");
            }
            else
            {
                MessageBox.Show("Ошибка подключения к базе данных");
            }
            ShowTermins(searchBox.Text);
        }