将存储过程结果传递给数组

时间:2012-10-12 10:53:01

标签: arrays vb.net

快速提问,我对如何处理数组问题有点不确定。

基本上我有一个存储过程输出一些课程类别,我想将所有行传递给一个数组。

Subject            SubjectCode

Applied Science    F04
Access to HE       F05

所以基本上上面是我从存储过程中得到的一个例子,我想将主题的结果传递给数组。

Dim num as Integer
Dim strNumResult as String

num = 0

Do While (rsData.Read())

num = num + 1

strNumResult = num.ToString()

Dim array(strNumResult) as String

loop

我假设我需要首先计算过程中的行数,然后将此结果放入数组中?那我怎么会系统地将程序中的所有主题都拉到数组中呢?

谢谢!

2 个答案:

答案 0 :(得分:1)

最简单的方法是使用List(Of Subject)而不是可以调整大小。我也会为这个主题创建一个类,因为你有两个字段。

Dim subjects = New List(Of Subject)
Using con = New SqlConnection(connectionString)
    Using cmd = New SqlCommand("StoredProcedureName", con)
        cmd.CommandType = CommandType.StoredProcedure
        Try
            con.Open()
            Using reader = cmd.ExecuteReader()
                While reader.Read
                    Dim subject = reader.GetString(0)
                    Dim subjectCode = reader.GetString(1)
                    subjects.Add(New Subject() With {
                                 .Subject = subject,
                                 .SubjectCode = subjectCode
                             })
                End While
            End Using
        Catch ex As Exception
            ' log exception 
        End Try
    End Using
End Using

这是该类的简单实现:

Public Class Subject
    Public Subject As String
    Public SubjectCode As String
End Class

如果您坚持使用阵列,可以拨打subjects.ToArray()

答案 1 :(得分:0)

您需要GetRows方法将记录集数据转换为数组:

array = recordset.GetRows(Rows, Start, Fields )

基本上执行存储过程,当你有结果时,使用GetRows方法,该方法返回结果中的行集合,给定一组唯一列ID。

您可以看到示例here

在您确保返回一些记录后,您可以这样做:

arrData = rsData.GetRows()

希望这有帮助。