2013-07-12 2 views
1
string Query = "SELECT [AA], [TEXT] FROM [TABLE] WHERE FK_ML_PROGRAM=200 AND FK_ML_LANGUAGE=" + Convert.ToInt32(cboLanguage.SelectedIndex) + " AND AA like 'Msg_%' ORDER BY ID "; 
LanguageData = DAL.ExecuteDataTable(Query); 

private DataRow GetRows(string b) 
{ 
    DataRow[] result_start = LanguageData.Select("AA='" + b.ToString() + "'"); 
    DataRow Row = result_start[0]; 

    return Row; 
} 

응용 프로그램을 실행할 때 IndexOutOfRangeException throw합니다. 이 문제의 원인은 무엇입니까?"IndexOutOfRangeException 처리되지 않았습니다"

+0

결과 세트가 비어있을 가능성이 높습니다. result_start의 길이를 확인한 후 그 중에서 뭔가를 할당 해보십시오. –

답변

1

필터가 반환 된 데이터 집합의 행과 일치하지 않는 것으로 보입니다.

특정 행을 가져 오기 전에 result_start에 행이 있는지 확인해야합니다.

5

result_start에는 아마도 요소가 없습니다. 체크가 필요합니다 :

private DataRow GetRows(string b) 
{ 
    DataRow[] result_start = LanguageData.Select("AA='" + b.ToString() + "'"); 
    if (results_start.Length > 0) 
     return result_start[0]; 

    return null; 
} 
+0

당신은 쿼리 테이블을 포함하는 데이터베이스에 데이터를 추가해야한다는 것을 의미합니까? –

+2

아니요,'LanguageData.Select (...)'에서 반환 된 것이 있는지 확인하기위한 조건이 필요합니다. 빈 배열이 반환되고있을뿐입니다. 그러므로 요소가 없기 때문에'result_start [0]'은 예외를 발생시킵니다. – computer10171

관련 문제