Как это имеет смысл?
cmd.Parameters.AddWithValue("@P1", grid.SelectedCells)
Поскольку вы пометили этот вопрос WinForms, вы, вероятно, используете DataGridView
, а не DataGrid
(имена имеют значение, поэтому используйте правильные). В этом случае свойство SelectedCells
имеет тип DataGridViewSelectedCellCollection
. Как имеет смысл установить значение этого параметра на это? Как это будет сравниваться с идентификатором в базе данных?
Если вы планируете использовать значения в этих ячейках, то вам действительно нужно получить эти значения. Вам также необходимо решить, собираетесь ли вы использовать одно значение или несколько. Вы используете =
в своем запросе SQL, что означает, что поддерживается только одно значение. Если вы хотите использовать несколько значений, вам нужно будет использовать IN
и предоставить список, но это также означает использование нескольких параметров. Я написал пример такого типа вещей, используя ListBox
некоторое время go. Вы можете найти это здесь . Вы можете адаптировать этот код к вашему сценарию следующим образом:
Dim connection As New SqlConnection("connection string here")
Dim command As New SqlCommand
Dim query As New StringBuilder("DELETE FROM utilisateur")
Select Case grid.SelectedCells.Count
Case 1
query.Append(" WHERE idu = @idu")
command.Parameters.AddWithValue("@idu", grid.SelectedCells(0).Value)
Case Is > 1
query.Append(" WHERE idu IN (")
Dim paramName As String
For index As Integer = 0 To grid.SelectedCells.Count - 1 Step 1
paramName = "@idu" & index
If index > 0 Then
query.Append(", ")
End If
query.Append(paramName)
command.Parameters.AddWithValue(paramName, grid.SelectedCells(index).Value)
Next index
query.Append(")")
End Select
command.CommandText = query.ToString()
command.Connection = connection