ParamArray - это то, что вы ищете.
Обновите свой запрос ExecuteRequest следующим образом:
Public Sub ExecuteRequest(ByVal strRequest As String, ParamArray Params() As SqlParameter)
Dim strConnexion As String = "myConnectionString"
Using Conn As New SqlConnection(strConnexion), Cmd As New SqlCommand(strRequest, Conn)
Cmd.Parameters.AddRange(Params)
Conn.Open()
Cmd.ExecuteNonQuery()
End Using
End Sub
, а затем вы можете назвать его как
ExecuteRequest("DELETE FROM tbl_devis WHERE id_devis = @id_devis", New SqlParameter("@id_devis", CInt(TBDevis.Text)))
Iтакже предлагает создать функцию sqlPar (имя как строка, значение как объект) с несколькими дополнительными перегрузками, чтобы упростить вызов
ExecuteRequest("DELETE FROM tbl_devis WHERE id_devis = @id_devis", sqlPar("@id_devis", TBDevis.Text))
ParamArray позволяет добавлять неопределенное количество аргументов, например
ExecuteRequest("SELECT ID FROM Table WHERE ID IN (@A, @B, @C, @D)", sqlPar("@A", 1), sqlPar("@B", 2), sqlPar("@C", 3), sqlPar("@D", 4))
Вы должны ВСЕГДА использовать SqlParameter вместо конкатенации строк для предотвращения SQL-инъекций.
Вы должны ВСЕГДА использовать также использование для IDisposable ресурсов.