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. Любые идеи относительно того, что вызывает это?«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

Смежные вопросы