Выяснение параметров SQL для SQLCommand - PullRequest
0 голосов
/ 11 октября 2011

В какой-то момент в прошлом, в мои дни VB6, я помню, как смог создать объект команды sql (не обязательно такой же, как у сегодняшнего варианта .NET) и автоматически заполнять параметры sql.

Это позволило мне делать такие вещи, как передача только тех параметров, которые я точно знал, и если два разных клиента использовали разные версии базы данных, я мог вызывать свои процедуры, зная, что я все равно получу значимый ответ.

Примерно так:

Dim cmd as SqlCommand
Set cmd = New SqlCommand(Connection)
cmd.CommandText = "MagicStoredProcedure"
cmd.CommandType = CommandType.StoredProcedure
If cmd.Parameters.Count > 0 Then
    If cmd.Parameters(0).Name = "@FirstParameter" Then
        cmd.Parameters("@FirstParameter").Value = someValue
    End If
End If
Dim r as Recordset
Set r = cmd.ExecuteRecordset()

Я помню, как делал это, но не могу найти никаких собственных примеров, и попытка сделать это в .NET, похоже, не работает вообще.Все примеры, которые я видел (и я искал в течение некоторого времени), добавляют параметры вручную.

Любые указатели?

Ответы [ 2 ]

0 голосов
/ 11 октября 2011

Я нашел процедуру SQLCommandBuilder.DeriveParameters, которая делает именно то, что я хотел.

SQLCommandBuilder.DeriveParameters(cmd)
If cmd.Parameters.Contains("@FirstParameter") Then
    cmd.Parameters("@FirstParameter").Value = someValue
End If

Не там, где я ожидал. Я ожидаю, что это запечено в объекте Command или в коллекции параметров.

0 голосов
/ 11 октября 2011

Существует шаблонное решение, которое я использовал в прошлом для доступа к БД, которое использует свойства класса, сопоставленные с переменными хранимой процедуры, и при необходимости строит строку на лету.

Ищите здесь объяснение

Это выглядит очень похоже на то, что вы получаете, когда добавляете хранимые процедуры и таблицы из подключенной базы данных в проект при использовании Visual Studio.

Возможно, это может указать вам правильное направление.

...