使用MYSQL从C#中删除数据库中的行

时间:2016-12-08 01:50:16

标签: c# mysql database

这是我第一次来这里,如果我错过发布或其他任何规则,请耐心等待。 我正在寻找使用C#从数据库中删除行的正确方法。我已经编写了代码来从datagridview中删除它但是我还要添加什么才能将它从数据库中删除?

以下是目前的代码:

foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
   if (!row.IsNewRow)
   {
      dataGridView1.Rows.Remove(row);
   }

   MessageBox.Show("Selected rows Deleted");
}

这是我最初尝试过的,通过搜索来思考:

OpenConnection();
string productType = txtDeleteProduct.Text;
MainForm frm = new MainForm();
mySqlDataAdapter = new MySqlDataAdapter("DELETE * from products        WHERE ProductType= '@productType';", connection);
DataSet DS = new DataSet();
mySqlDataAdapter.Fill(DS);
dataGridView1.DataSource = DS.Tables[0];
CloseConnection();

1 个答案:

答案 0 :(得分:0)

这是你的第二个样本的改编:

using (var cn = new MySqlDbConnection("your connection string here"))
using (var cmd = new MySqlDbCommand("DELETE * from products WHERE ProductType= @productType;")) // Note that I removed the single quotes (')
{
    //Use the actual column type and length here.
    // Ignore examples elsewhere online that use AddWithValue(). This is better!
    cmd.Parameters.Add("@productType", MySqlDbType.VarString, 25).Value = txtDeleteProduct.Text;
    cn.Open();
    cmd.ExecuteNonQuery();
}

我的问题中没有足够的信息让我完全完成此操作。您需要类似的东西,但需要在SQL语句中使用实际的表名和关键字段。这是一个更接近的东西:

using (var cn = new MySqlDbConnection("your connection string here"))
using (var cmd = new MySqlDbCommand("DELETE * from `MYTABLE` WHERE MyIDColumn = @rowKey;")) // Note that I removed the single quotes (')
{
    cmd.Parameters.Add("@rowKey", MySqlDbType.Int32);
    cn.Open();

    foreach (DataGridViewRow row in dataGridView1.SelectedRows)
    {
        if (!row.IsNewRow)
        {
            //not sure which cell(s) in the grid make up your primary key
            cmd.Parameters["@rowKey"].Value = Convert.ToInt32(row.Cells[0]);
            cmd.ExecuteNonQuery();
            dataGridView1.Rows.Remove(row);
        }        
    }    
}
MessageBox.Show("Selected rows Deleted");

最后......这里的正常程序实际上是发送删除命令,然后重新绑定网格......从头开始重新加载所有内容。你这样做是因为你已经有了加载网格的代码,所以它为你节省了一些编码工作,并且因为它可以让你有机会在同时更新表中的其他内容时更新。