Передача данных в качестве параметра в хранимый процесс SQL Server из VB.net - PullRequest
1 голос
/ 29 июля 2011

Подскажите, пожалуйста, как это сделать.Спасибо.

Ответы [ 3 ]

0 голосов
/ 29 июля 2011

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

Private Function AddToList(dtData As DataTable) As List(Of [Integer])
Dim ListOfInt As New List(Of Integer)()
For Each row As DataRow In dtData.Rows
    For Each Col As DataColumn In dtData.Columns
        ListOfInt.Add(row(Col).ToString())
    Next
Next
Return ListOfInt
End Function
Private Function DataToXML() As XDocument
        Dim DataDoc As XDocument = <?xml version='1.0'?>
                                   <Root>
                                       <%= RenderKeys(SelectedDataValues) %>
                                   </Root>
        Return DataDoc
End Function    
Private Function RenderKeys(ByVal keys As List(Of Integer)) As Collection(Of XElement)
        Dim ElementCollection As New Collection(Of XElement)
        For Each Key As Integer In keys
            Dim XKey As XElement = <Key ID=<%= Key %>/>
            ElementCollection.Add(XKey)
        Next
        Return ElementCollection
End Function

Это просто берет список идентификаторов из таблицы, которая была извлечена из SQL Server, и добавляет каждый ее идентификатор в список (целого числа).) Затем в вашем sproc просто добавьте тип данных xml для входящих данных.

0 голосов
/ 29 июля 2011
PrivateFunction GetDataFromDb(ByVal lcSQL AsString, ByVal loCommandType As CommandType, _
    ByVal lcTableName AsString, ByValParamArray loParameters() As SqlParameter) As DataSet

    Dim loResult As DataSet
    Dim loConnection As SqlConnection
    Dim loCommand As SqlCommand
    Dim loAdapter As SqlDataAdapter
    Dim i As Int32
    Dim loParameter As SqlParameter

    Try

        'Create and open connection to the Northwind database
        loConnection = New SqlConnection("Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=(local);Connect Timeout=30")
        loConnection.Open()

        'Prepare command and to select data from the database
        loCommand = New SqlCommand(lcSQL, loConnection)
        loCommand.CommandType = loCommandType

        IfNot loParameters IsNothingThen
            ForEach loParameter In loParameters
                loCommand.Parameters.Add(loParameter)
            Next
        EndIf

        loAdapter = New SqlDataAdapter(loCommand)

        loResult = New DataSet
        loAdapter.Fill(loResult, lcTableName)

        'Return list of the customers as a DataSet
        Return loResult

    Catch ex As Exception
        Throw ex
    Finally

        'Clean resources
        IfNot loAdapter IsNothingThen
            loAdapter.Dispose()
            loAdapter = Nothing
        EndIf

        IfNot loCommand IsNothingThen
            loCommand.Dispose()
            loCommand = Nothing
        EndIf

        IfNot loConnection IsNothingThen

            If loConnection.State = ConnectionState.Open Then
                loConnection.Close()
            EndIf

            loConnection.Dispose()
            loConnection = Nothing

        EndIf
    EndTry

EndFunction

Найдено по адресу: http://support.microsoft.com/kb/555266

0 голосов
/ 29 июля 2011

Прочтите эту статью о том, как это сделать Передача массива или таблицы данных в хранимую процедуру

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...