2011-05-11 4 views
1

C# asp.net을 사용하고 있습니다. 일단 제출 된 데이터는 읽기 전용 형식으로 표시하려고합니다. 그것은 교육용이며, 처리기에는 매개 변수화가 없습니다. (실제 배포에는 해당되지 않습니다.) select 명령을 실행하면 지정된 캐스트가 유효하지 않습니다. 첫 번째 GetInt32 행에서 예외가 발생합니다. 값은 int이며, 열은 int로 설정됩니다. 내가 뭘 놓치고 있니?데이터 판독기 지정 캐스트가 유효하지 않습니까?

string epl = "SELECT Entity, Employees, CA, MI, NY, NJ, Primex, EplLim, EplSir, Premium, Wage, Sublim, SubmissionId FROM EPL WHERE SubmissionId =" + x; 
        using (SqlCommand epcmd = new SqlCommand(epl, EplConn)) 
        { 
         SqlDataReader epdr = epcmd.ExecuteReader(); 
         epdr.Read(); 
         LblEplShowEntity.Text = epdr.GetInt32(0).ToString(); 
         LblEplShowTotalEmpl.Text = epdr.GetInt32(1).ToString(); 
         LblEplShowCalEmpl.Text = epdr.GetInt32(2).ToString(); 
         LblEplShowMichEmpl.Text = epdr.GetInt32(3).ToString(); 
         LblEplShowNyEmpl.Text = epdr.GetInt32(4).ToString(); 
         LblEplShowNjEmpl.Text = epdr.GetInt32(5).ToString(); 
         LblEplShowPrimEx.Text = epdr.GetInt32(6).ToString(); 
         LblEplShowLim.Text = epdr.GetInt32(7).ToString(); 
         LblEplShowPrem.Text = epdr.GetInt32(8).ToString(); 
         LblEplShowWage.Text = epdr.GetInt32(9).ToString(); 
         LblEplShowInvestCost.Text = epdr.GetInt32(10).ToString(); 
         epdr.Close(); 
        }  
+0

ToString을 ('과'전화 int.Parse' 나 :. 당신의 선택 문을 변경하려고 'int.TryParse'는 여전히 오류가 있습니까? 1 열 (인덱스 0)에 반환되는 실제 텍스트는 무엇입니까? – Tejs

답변

0

데이터베이스 열이 int인지 확인하십시오. DB Null 값을 확인하려면

LblEplShowEntity.Text = epdr.IsDBNull(0) ? string.Empty : epdr.GetInt32(0).ToString(); 
0

데이터의 Null 값은 무엇입니까? 그 예외도 마찬가지입니다. 또한 필드가 실제로 실수로 정의되고 부동 소수점 숫자로 정의되지 않는지 다시 확인하십시오.

+0

그래, 아니, 내가 말했듯이, 값이 있고 필드가 int로 정의되어 있습니다. . –

0

select 문에서 각 열에 대한 정확한 데이터 형식을 알아야합니다. 예를 들어, 엔터티 열이 BIGINT 유형 인 경우 reader.GetInt32()을 사용하려고하면 InvalidCastException을 사용하는 것보다 reader.GetInt64() 메서드를 사용해야합니다.

둘째, NULL 값을 별도로 처리해야합니다. 당신이 데이터 판독기로부터 데이터를 복용에 대한 문자열 인덱서를 사용할 수

int? entity = (int?)reader["Entity"]; 

공지 사항 : 당신은 reader.IsDBNull (0) 또는 사용 다음 코드를 확인해야합니다. 이것은보다 읽기 쉬운 방법입니다.

편집 : 당신이 문자열 표현 (일명`epdr [ "엔터티"] 걸릴 것 인 경우)

string epl = @"SELECT CAST(Entity AS INT) AS Entity, Employees, CA, MI, NY, NJ, Primex, EplLim, EplSir, Premium, Wage, Sublim, SubmissionId 
FROM EPL WHERE SubmissionId =" + x; 
관련 문제