【发布时间】: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),它不会被删除,有时当我点击第三条记录时,第一条记录 被删除。
我不知道我是否足够清楚,但如果您希望我添加任何信息,我会告诉您。
我认为这与DataGridView 的RowID 和我的桌子的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