ExecuteNonQuery выдает исключение Недопустимое использование параметра по умолчанию

Когда я ничего не передаю в качестве параметра в vb.net, в это время ExecuteNonQuery генерирует исключение. Это не позволяет мне вставлять нулевые значения

Dim id = Nothing Dim sqlStr = вставить в студента, где Id =?

cmd.Parameters.AddawithValue(?,id) cmd.ExecuteNonQuery()


person Arfin    schedule 07.08.2020    source источник
comment
Попробуйте DBNull.Value, если вы хотите передать параметр NULL   -  person JohnPete22    schedule 07.08.2020
comment
И убедитесь, что имя параметра соответствует запросу. @id было бы хорошим именем для использования. cmd.Parameters.AddawithValue("@id",id), а затем убедитесь, что в вашем запросе используется этот параметр.   -  person JohnPete22    schedule 07.08.2020
comment
Не используйте AddWithValue вообще, особенно если вы хотите вставить NULLS. Вызовите Add, укажите тип данных, а затем установите свойство Value, назначив DBNull.Value для NULL.   -  person jmcilhinney    schedule 07.08.2020
comment
Спасибо, ваше решение сработало   -  person Arfin    schedule 07.08.2020


Ответы (1)


Ваш пример немного чепуха, учитывая, что оператор INSERT не имеет предложения WHERE. Однако принцип остается в силе:

Dim id As Integer?
Dim sql = "UPDATE Student SET Name = @Name WHERE Id = @Id"
Dim command As New OleDbCommand(sql, connection)

With command.Parameters
    .Add("@Name", OleDbType.VarChar, 50).Value = name
    .Add("@Id", OleDbType.Integer).Value = If(id.HasValue, id.Value, CObj(DBNull.Value))
End With
person jmcilhinney    schedule 07.08.2020