2016-07-21 4 views
0

SQL 테이블 'Zupanije'에서 2 개의 변수를 가져 오지만 사용 방법을 모르겠습니다. 아래 코드를 시도했지만 키와 값 대신 키를 두 번 사용합니다.SQL Server 데이터베이스에서 더 많은 데이터 가져 오기

sqlCmd.CommandText = "SELECT COUNT(*) From Zupanije"; 
conn.Open(); 
int count = (int)sqlCmd.ExecuteScalar(); 
conn.Close(); 

sqlCmd.CommandText = "SELECT Naziv, Sifra From Zupanije"; 
conn.Open(); 
using (var zupanijeReader = sqlCmd.ExecuteReader()) 
{ 
    while (zupanijeReader.Read()) 
    { 
     for (int i=0; i <= count; i++) 
     { 
      izborZupanija.Add(zupanijeReader[i].ToString(), 
           Convert.ToDouble(zupanijeReader[i])); 
     } 
    } 
} 
conn.Close(); 
+2

무엇이'count'입니까 ?? 'count'보다 크거나 같으면 당신은 i ++를 늘리고 있습니다. 그게 불행하게 끝날지도 모릅니다 – Petaflop

+0

고지를 위해 고쳐주었습니다! –

+0

'COUNT' 함수는 데이터베이스 테이블에 ** 행 **의 수를 반환합니다. 그런데 어떤 이유로이 값을 ** 열의 수 **로 사용합니다. –

답변

0

나는 @leetibbett에 동의합니다. SqlDataReader는 Read()를 호출 할 때 각 결과를 반복합니다. 그런 다음 각 열 값을 꺼내 SqlDataReader.GetString 및 SqlDataReader.GetDouble 메서드를 사용하여 열 인덱스를 인수로 전달합니다.

sqlCmd.CommandText = "SELECT Naziv, Sifra From Zupanije"; 
conn.Open(); 
using (var zupanijeReader = sqlCmd.ExecuteReader()) 
{ 
    while (zupanijeReader.Read()) 
    { 
     izborZupanija.Add(zupanijeReader.GetString(0), zupanijeReader.GetDouble(1)); 
    } 
} 
conn.Close(); 
0

판독기는 인덱서를 통해 열 배열을 노출합니다. 변수 i을 사용하여 같은 열을 두 번 선택했습니다. 데이터 유형이 db에서 이미 올바른 경우 리더에서 도우미 메소드를 사용하여 값 (예 : reader.GetString(0)reader.GetDouble(1))을 가져와야합니다.

관련 문제