快速提问,我对如何处理数组问题有点不确定。
基本上我有一个存储过程输出一些课程类别,我想将所有行传递给一个数组。
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
我假设我需要首先计算过程中的行数,然后将此结果放入数组中?那我怎么会系统地将程序中的所有主题都拉到数组中呢?
谢谢!
答案 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()
希望这有帮助。