2012-10-12 5 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)을 사용하는 것입니다. 두 필드가 있으므로 주제에 대한 클래스도 만들 수 있습니다.

당신이 배열을 주장하는 경우
Public Class Subject 
    Public Subject As String 
    Public SubjectCode As String 
End Class 

, 당신은 subjects.ToArray()를 호출 할 수

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 

여기에 해당 클래스의 간단한 구현입니다.