2012-10-12 98 views
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 

我假設我需要先計算過程中的行數,然後將這個結果放入數組中?那麼我將如何系統地將程序中的所有主題拉入陣列?

謝謝!

+0

顯示您的ADO.NET代碼。 –

+0

新增了我最喜歡的點 - 只是不確定如何繼續實際輸出結果到數組中。 – PipBoy

+0

一般觀點:在首次使用前不要聲明變量,並在聲明中初始化變量。這使得代碼更短,更容易遵循(數據流更加明確)並且更少出錯。 –

回答

0

您需要GetRows方法,這將讓您的記錄數據到一個數組:

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

基本上執行存儲過程,當你有結果使用GetRows方法從結果返回行的集合,給定一個唯一的列ID的數組。

您可以看到一個示例here

在確保你有一些返回的記錄,你可以做到這一點後,你的情況:

arrData = rsData.GetRows() 

希望這有助於。

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

相關問題