Как создать кнопку «Удалить для удаления столбцов сетки из базы данных SQL Server в C #»? - PullRequest
3 голосов
/ 06 апреля 2019

Мне нужна часть кода, где я могу удалить столбец или строку сетки из базы данных, нажав кнопку delete, и это должно быть сделано с помощью C #.

Я попытался удалить его с помощью архитектуры MVVM, и, похоже, что-то написал не так. Есть ли другой способ сделать это?

public void DeleteAuction()
{
     using (SqlConnection conn = new SqlConnection())
     {
         conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnString"].ToString();
         conn.Open();

         SqlCommand command = new SqlCommand("UPDATE AuctionTbl2 SET deleted = 1 WHERE id = @Id", conn);

         SqlParameter myParam = new SqlParameter("@Id", SqlDbType.Int, 11);
         myParam.Value = this.Id;

         command.Parameters.Add(myParam);

         int rows = command.ExecuteNonQuery();
     }
}

Теперь я создал конструкторы, свойства и поля, и это работает нормально. Я пытался подключить данные из SQL Server в C #, это тоже нормально работало, но когда я нажимаю кнопку delete, это не работает. Нет ошибок, нет ничего. Пожалуйста, помогите, я сейчас очень отчаялся.

[image 1 for deleted[1]">

Like this

Ответы [ 2 ]

1 голос
/ 06 апреля 2019

ОБНОВЛЕНИЕ: Вы должны попробовать этот код, я проверял его лично, он работает как шарм. Скажи мне, получит ли ты то, что ты хочешь.

public void DeleteAuction()
{
    try
    {
        bool isSuccess = false;
        DataTable dt = new DataTable(); 
        using (SqlConnection conn = new SqlConnection())
        {
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnString"].ToString();
            conn.Open();
            SqlCommand command = new SqlCommand("UPDATE AuctionTbl2 SET deleted = 1 WHERE id = @Id", conn);
            command.Parameters.AddWithValue("@Id",Id);
            int rows = command.ExecuteNonQuery();
            if(rows>0)
            {
                MessageBox.Show("Deletion Successfull");
                dt = selectAuction();
                auctionDataGridView.DataSource = dt;
            }
            else
                MessageBox.Show("Deletion Unsuccessfull");
        }
    }
}
catch(Exception e)
{
    MessageBox.Show(e.Message);
}

//method to update the dataGridView after deletion
public DataTable selectAuction()
{
    try
    {
        DataTable table = new DataTable(); 
        using (SqlConnection conn = new SqlConnection())
        {
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnString"].ToString();
            conn.Open();
            String sql = "select * from AuctionTbl2";          
            SqlCommand cmd = new SqlCommand(sql, con);         
            SqlDataAdapter adaptor = new SqlDataAdapter(cmd);                                         
            adaptor.Fill(table);    
        }               
    }
    catch (Exception e)
    {
        MessageBox.Show(e.Message);                 
    }
    finally
    {
        con.Close();                 
    }
    return table;
}

ПРИМЕЧАНИЕ: Я пытался использовать переменные так же, как ваши, но если есть одно подлый другое имя переменной, то извините.

0 голосов
/ 06 апреля 2019

Есть несколько способов решить проблему.1) Выполните команду SQL, чтобы установить один из удаленных столбцов записи.Затем перепривязать DataGridView.2) Удалите строку из DataGridView, затем выполните команду SQL, чтобы установить для столбца «Удаленные» записи значение 1.

Мне нравится опция «номер 2», поскольку она перемещает наименьшее количество данных.Предполагая способ 2, он будет выглядеть примерно так:

private void DeleteSale_Click(object sender, EventArgs e)
{ 
      var RowId = dataGridView.Rows[dataGridView.CurrentCell.RowIndex].Cells[0].Value.ToString(); 
    dataGridView.Rows.RemoveAt(dataGridView.CurrentCell.RowIndex);


    using(var connection = new SqlConnection("myConnectionString")
    {
         using(var command = new SqlCommand("myStoredProcedureName", connection))
         {
              command.CommandType = CommandType.StoredProcedure;
              command.Parameters.Add(new SqlParameter("Id", RowId));
              command.Connection.Open();
              command.ExecuteNonQuery();
              command.Connection.Close();
          }
    }    
}

Просто к сведению: никогда не пишите такие встроенные операторы SQL, всегда используйте хранимые процедуры для параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...