Загрузка данных из хранимой процедуры SQL - PullRequest
2 голосов
/ 03 мая 2011

Я пытаюсь вызвать хранимую процедуру для программы WCF vb.net.По какой-то причине он не возвращает никаких строк на стороне vb.Это должен быть простой datatable.load (cmd.executereader).Когда я выполняю хранимый процесс в SQL, я получаю как минимум две строки.НЕТ параметров для хранимых процедур.

Вот мой VB-код:

Public Function GetClaimsLetterTypes() As List(Of LetterTypes) Implements ILetterWriter.GetClaimsLetterTypes
    Dim SQLcon As New SqlClient.SqlConnection
    Dim SQLcmd As New SqlClient.SqlCommand
    Dim dtTypes As DataTable
    Dim rw As DataRow

    'Initialize
    GetClaimsLetterTypes = New List(Of LetterTypes)

    'Connect to the database
    SQLcon.ConnectionString = "Data Source=VMSQL08-SRV1;Initial Catalog=Mine;User ID=stupido;Password=opensesame;"
    SQLcon.Open()

    'Grab the stored procedure, which returns the letter types
    SQLcmd.CommandText = "sp_GetTypes"
    SQLcmd.CommandType = CommandType.StoredProcedure
    SQLcmd.Connection = SQLcon


    'Execute the stored procedure, fill the datatable from a data adapter
    dtTypes = New DataTable
    dtTypes.Load(SQLcmd.ExecuteReader)

    'Load the list to be returned
    For Each rw In dtTypes.Rows
        Dim ltrTypes As New LetterTypes
        ltrTypes.ID = rw(0)
        ltrTypes.TypeName = rw(1)

        'Add the variable to the object list
        GetClaimsLetterTypes.Add(ltrTypes)
    Next

    'Shut it down
    SQLcmd.Dispose()
    SQLcon.Close()
    SQLcon.Dispose()


End Function

Что я делаю не так?По какой-то причине он не отправит строки обратно в мой WCF.У меня есть другая функция, которая работает почти идентично, но работает просто отлично.

Я что-то упустил?

Спасибо, Джейсон

1 Ответ

1 голос
/ 03 мая 2011

Попробуйте этот код, он может в значительной степени заменить все: от объявления вашей команды до конца вашей для каждого цикла.Имеет дополнительное преимущество использования содержимого SqlDataReader при выполнении Read ()

Using command As New SqlClient.SqlCommand("sq_GetTypes", SQLcon)
    command.CommandType = CommandType.StoredProcedure
    command.Connection.Open()
    Dim reader As SqlClient.SqlDataReader = command.ExecuteReader
    Dim ltrTypes As LetterTypes
    While reader.Read
        ltrTypes = New LetterTypes
        ltrTypes.id = reader(0)
        ltrTypes.typename = reader(1)
        GetClaimsLetterTypes.Add(ltrTypes)
    End While
    reader.Close()
End Using
...