如何创建“删除按钮以从C#中删除SQL Server数据库中的网格列”?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何创建“删除按钮以从C#中删除SQL Server数据库中的网格列”?相关的知识,希望对你有一定的参考价值。
我需要一部分代码,我可以通过单击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
按钮时,它不起作用。没有错误,没有任何错误。请帮忙,我现在非常绝望。
[
答案
更新:你应该尝试这个代码,我已经亲自测试过,它运行就像一个魅力。告诉我它是否能满足你的需求。
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;
}
注意:我试图像你的一样使用变量,但如果有一个偷偷摸摸的不同变量名,那么请原谅我。
另一答案
有几种方法可以解决问题。 1)执行SQL命令将记录的已删除列设置为1。然后重新绑定DataGridView。 2)从DataGridView中删除该行,然后执行SQL命令将记录的Deleted列设置为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语句,始终使用参数存储过程。
以上是关于如何创建“删除按钮以从C#中删除SQL Server数据库中的网格列”?的主要内容,如果未能解决你的问题,请参考以下文章