【问题标题】:Delete a record from a database and DataGridView at the same time using C#使用C#同时从数据库和DataGridView中删除一条记录
【发布时间】:2017-04-17 10:33:13
【问题描述】:

我有一个DataGridView,它从链接到 SQL Server Manangement Studio 的数据库中提取数据并将其显示在 DataGridView 上。

我有一个Delete 按钮,允许用户使用此代码删除特定记录:

string SQLdelete = "DELETE FROM User WHERE Id = @RowID";

SqlParameter RowParameter = new SqlParameter();

SqlCommand deleteRecord = new SqlCommand();
deleteRecord.Connection = con;
deleteRecord.CommandType = CommandType.Text;
deleteRecord.CommandText = SQLdelete;

RowParameter.ParameterName = "@RowID";
RowParameter.SqlDbType = SqlDbType.Int;
RowParameter.IsNullable = false;
RowParameter.Value = rowIndex + 1;

deleteRecord.Parameters.Add(RowParameter);

deleteRecord.Connection.Open();
deleteRecord.ExecuteNonQuery();
deleteRecord.Connection.Close();

问题是在删除多条记录后,我认为RowID 混淆了,例如,如果我有一个 6-8 的数据 ID (这是与删除查询相关联的 ID),它不会被删除,有时当我点击第三条记录时,第一条记录 被删除。

我不知道我是否足够清楚,但如果您希望我添加任何信息,我会告诉您。

我认为这与DataGridViewRowID 和我的桌子的ID 有关;当我删除许多记录时,它们会混淆。

谁能告诉我应该在我的删除代码中添加什么来避免这个问题?

非常感谢!

【问题讨论】:

  • 我不知道为什么你可以通过DataGridView的rowId从表中删除,它们是不同的。您应该按表的 ID 删除记录。
  • 我正在尝试删除 DataGridView 上的选定行,同时从表中删除相同的记录。我如何链接这两个?我考虑了表格的 ID 和 datagridView 的 RowID,但它们一直混淆。
  • 获取选定行的“ID”单元格,然后通过该单元格值从表中删除记录。
  • 我正在使用这个变量: int rowIndex = dataGridView1.CurrentCell.RowIndex; dataGridView1.Rows.RemoveAt(rowIndex);这是 DataGridView 所选记录的 ID,但是当我的表数据的 ID 不同时(比如我删除了前三个记录,而我的数据来自 3-8),这就是 ID 混淆的时候,甚至当我单击该 rowid 将其删除,它不会从数据库中删除。
  • RowIndex 不是行 ID,它总是随着添加或删除的行数而变化,它也不是数据库表中的 ID 字段。您必须获取所选行的“ID”单元格值,或所选记录的 ID 才能在 DB 中正确删除它。

标签: c# sql-server visual-studio datagridview ssms


【解决方案1】:

这里您需要使用表中的“ID”删除记录。

表示需要将“ID”绑定到datagridview,datagridview中存在的“ID”需要作为参数传递给查询,需要删除记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多