sqlparameter - пустое значение останавливает выполнение хранимой процедуры

Контекст:

Используя sqlCommand, я выполняю хранимую процедуру, которая принимает ряд параметров. Все эти sqlParameters имеют тип string. Команда выполняется успешно, когда значения всех параметров заполнены хотя бы одним символом.

Проблема: Когда я удаляю текст из значения и заменяю его двойной кавычкой (""). Хранимая процедура на сервере не выполняется.

Я пытался изо всех сил стрелять в это, но никаких ошибок не выдается, указатель просто прогрессирует на своем веселом пути!!! #Смущенный

Код:

Вот код многократного использования, который у меня есть для создания sqlParameter:

Try

    With param

        .ParameterName = name

        'set value
        If TypeOf value Is String And value.ToString.Trim.Length = 0 Then
            .Value = DBNull.Value
        ElseIf TypeOf value Is Integer And value.ToString.Trim.Length = 0 Then
            .Value = DBNull.Value
        Else
            .Value = value
        End If

        .DbType = type
        .Direction = direction
        .IsNullable = isNullable

        If sourceColumn.Length > 0 Then
            .SourceColumn = sourceColumn
        End If

    End With

Catch : param = Nothing : End Try

Вот код многократного использования, который я выполнил хранимую процедуру:

Try

            If (_Connection Is Nothing) Then
                Throw New Exception("No connection string found.")
            End If

            If (_commandText Is Nothing) Then
                Throw New Exception("No SQL command text found.")
            End If

            _Commander = New SqlCommand(_commandText, _Connection)

            With _Commander

                .CommandType = _commandType
                '.Parameters.AddRange(_parameters.ToArray)
                .Parameters.Add(New SqlParameter("nameOfPage", "A"))
                .Parameters.Add(New SqlParameter("nameOfRoutine", "B"))
                .Parameters.Add(New SqlParameter("message", "C"))
                .Parameters.Add(New SqlParameter("extraInformation", ""))

                .Connection.Open()
                .BeginExecuteNonQuery()

            End With

        Catch ex As SqlException
            Throw New Exception(_message_Commamder_FailedToExecute & ex.Message)
        Catch ex As Exception
            Throw New Exception(_message_Commamder_FailedToExecute & ex.Message)
        Finally
            _Commander.Connection.Close()
            _Commander = Nothing
        End Try

*** Обратите внимание, что последний параметр имеет значение двойной кавычки.

Дополнительная информация:

Я запустил SQL Profiler при попытке выполнить хранимую процедуру из кода. Профилировщик не установил соединение с базой данных, и теперь я знаю, что проблема не в стороне SQL Server.

0 ответов

Другие вопросы по тегам