2015-05-06 2 views
-1

Проблема с приведенным ниже кодом заключается в том, что я никогда не вижу своего кода catch. Если мой идентификатор не существует, он показывает пустой набор данных. Что пошло не так?Попытка поймать никогда не попадает в блок catch

private void btnSearch_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     this.Cursor = Cursors.WaitCursor; 
     SqlConnectie vandaag = new SqlConnectie(); 
     vandaag.Connection(); 
     SqlDataAdapter sda = new SqlDataAdapter("select ID, VERSIE, SB, NAAM, M_DATUM, V_DATUM from RE1 where ID=" + tbRecept.Text, SqlConnectie.conn); 
     DataTable dt = new DataTable(); 
     sda.Fill(dt); 
     dgvTemp.DataSource = dt; 
     SqlConnectie.conn.Close(); 
     this.Cursor = Cursors.Default; 
    } 

    catch 
    { 
     MessageBox.Show("ID doesn't exist"); 
    } 
} 
+1

не получив никакого результата из запроса SQL не ошибка, попробуйте поймать используется, чтобы поймать ошибки бросали –

+0

Вы не определили, что вы хотите, чтобы поймать. Например: 'catch (Exception e)' Но это не вызывает вашу проблему. См. Ответ от Tim – DangeMask

+0

@JeremyC. что я должен использовать тогда? –

ответ

5

Почему вы ожидаете исключения, если ни одна строка не возвращается из базы данных? Совершенно верно, чтобы получить пустой набор результатов, dataadapter вернет пустой DataTable.

Вы можете проверить это:

DataTable dt = new DataTable(); 
sda.Fill(dt); 
dgvTemp.DataSource = dt; 
if(dt.Rows.Count == 0) 
    MessageBox.Show("ID doesn't exist"); 
+0

спасибо, теперь он работает. –