1

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

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

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

我假设我需要先计算过程中的行数,然后将此结果放入数组中?然后,我将如何系统地将程序中的所有主题拉入数组?

谢谢!

4

2 回答 2

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().

于 2012-10-12T11:18:24.500 回答
0

您需要GetRows将记录集数据放入数组的方法:

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

基本上执行你的存储过程,当你得到结果时,使用 GetRows 方法,它从结果中返回一组行,给定一个唯一列 ID 的数组。

你可以在这里看到一个例子。

在确保您返回了一些记录之后,您可以执行以下操作:

arrData = rsData.GetRows()

希望这可以帮助。

于 2012-10-12T11:06:58.670 回答