2014-11-23 3 views
0

Я сделал приложение asp, которое позволяет пользователю искать записи в базе данных. Я изменил это, разрешив пользователю искать только одну строку при каждом нажатии на кнопку поиска. Но мой код для этого не работает! Класс продукты:Выбор верхней строки Asp.net

public DataTable SelectRow() 
    { 
    string sql = "SELECT TOP 1 * FROM Products ORDER BY ProductID ASEC"; 
    return SelectRow(sql); 
    } 
    public DataTable SelectRow(string Query) 
    { 
    try 
    { 
     return db.RunQuery(Query); 
    } 
    catch 
    { 
     return new DataTable(); 
    } 

Кнопка поиска:

protected void btnSearch_Click(object sender, EventArgs e) 
    { 
     grid.DataSource = product.SelectRow(); 
     DataBind(); 
     lblMsg.Text = ""; 
     btnRemove.Enabled = false; 
     btnUpdate.Enabled = false; 
     grid.SelectedIndex = -1; 

     } 

Пожалуйста, не могли бы вы изменить свой код, чтобы позволить мне найти одну запись за один раз. Спасибо.

+0

Почему ваш метод 'SelectRow()' возвращает логическое значение? Разве он не должен возвращать фактический ряд? – dotnetom

+0

Какую базу вы используете? –

+0

База данных SQL Server – Loay

ответ

0

Ваш SQL недействителен, и обработка исключений проглатывает исключение, которое покажет вам это.

Там нет такого понятия, как ASEC - это должно быть просто ASC:

string sql = "SELECT TOP 1 * FROM Products ORDER BY ProductID ASC"; 

Потому что у вас есть tryбез каких-либо реальных последствий (очень плохая практика), такие как Rethrow или некоторые регистрации, фактическое исключение проглатывается. Вы запустили блок catch, который возвращает пустой DataTable.

Не делайте этого. Избавиться от этого try блок вообще - пусть исключение пузырится вверх. Если бы вы сделали это для начала, вы бы сразу выяснили проблему.

Не используйте обработку исключений как механизм управления потоком - это плохая практика.

+0

Это сработало отлично! Большое спасибо за ваш вклад, и я ценю это. У вас есть смысл использовать try catch! Я думал, что это хороший механизм, чтобы наверстать какие-либо исключения, если они будут найдены. Я согласен с вами, когда вы упомянули о нем как о плохой практике, но в некоторых случаях это немного удобно. – Loay

+0

@ Loay - возможно. Но очень редкий случай. По умолчанию лучше не делать этого. – Oded

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