2009-10-03 4 views
0

Я использовал следующий код, чтобы добавить обратную связь, введенную в веб-форму, в базу данных.Использование SqlCommandBuilder в ASP.NET

Код работает нормально. Но когда я пытаюсь удален Тхи заявление

SqlCommandBuilder objcb = new SqlCommandBuilder(objDa); 

я получаю ошибку, я имею в виду его выполнение еще части.

Может ли кто-нибудь сказать мне, что такое использование SqlCommandBuilder?

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    if (txtName.Text.Trim() == "") 
    { 
     Response.Write("<script>alert ('Name Field cannot be left blank')</script>"); 
     return;    
    } 

    if (txtFeedBack.Text.Trim() == "") 
    { 
     Response.Write("<script>alert('FeedBack Field cannot be left blank')</script>"); 
     return; 
    } 

    objSqlConnection.ConnectionString = connectionStringSetting; 
    objSqlConnection.Open(); 

    try 
    { 
     SqlDataAdapter objDa = new SqlDataAdapter("select * from FeedBack", objSqlConnection); 
     SqlCommandBuilder objcb = new SqlCommandBuilder(objDa); 
     DataSet objDs = new DataSet("FeedBack"); 
     objDa.Fill(objDs, "FeedBack"); 
     DataRow dr = objDs.Tables["FeedBack"].NewRow(); 
     dr[1] = txtName.Text; 
     dr[2] = txtAddress.Text; 
     dr[3] = txtCity.Text; 
     dr[4] = txtCountry.Text; 
     dr[5] = txtEmail.Text; 
     dr[6] = Convert.ToInt32(txtContactNo.Text); 
     dr[7] = txtFeedBack.Text; 
     objDs.Tables["FeedBack"].Rows.Add(dr); 
     objDa.Update(objDs, "FeedBack"); 
     Response.Write("<script>alert('Your FeedBack has been submitted')</script>"); 
     objSqlConnection.Close(); 
    } 
    catch (Exception) 
    { 
     Response.Write("<script> alert('Error on Page. Please try after sometime')</script>"); 
     objSqlConnection.Close(); 
    } 

И есть ли способ, чтобы отобразить сообщения об ошибках, как если пользователь вводит значение строки вместо значения Integer должно отображаться сообщение, как «входная строка не вводится в правильном формате?

+0

Кстати, вы можете использовать 'String.IsNullOrWhiteSpace()' – abatishchev

+0

Не в октябре 2009 года он не мог! –

ответ

0

Никогда не использовать catch (Exception). Это скрывает проблему. Если возникает исключение, то есть что-то серьезное. Вам нужно узнать об этом.

Удалите весь блок try/catch (сохраните код внутри него!). Затем запустите свой код еще раз. Если есть исключение, вы увидите его на странице с ошибкой. Если нет, используйте средство просмотра событий, чтобы просмотреть журнал событий Windows для получения предупреждающего сообщения из источника «ASP.NET». Он должен содержать полное исключение.

+0

Хотя я согласен с духом вашего ответа, говорю кому-то: «НИКОГДА не используйте catch (Exception)», кажется мне немного вводящим в заблуждение. Наверное, я бы посоветовал людям правильно научиться эффективно использовать блоки try/catch и понимать, когда уместно обрабатывать исключения, и когда они позволят им пузыриться и обрабатываться средой выполнения. –

+0

Почти во всех случаях исключения не должны обрабатываться. Это особенно верно в том, как OP поймал исключение, а затем даже не отобразил его. Я лучше скажу кому-нибудь _never_, и дождитесь, пока они узнают, что в каком-то случае они перехватывают исключения, а не говорят «может быть» и думают «все время». –

+0

Как я уже сказал, я согласен с духом вашего комментария. Я думаю, что большая проблема заключается в том, что так много примеров невольно захватывают и печатают Исключение, поэтому люди просто вырезают и вставляют, и мало кто когда-либо узнает, как должна работать обработка исключений. –

0

Окончательный ответ заключается в том, что линия, о которой вы говорите, делает кучу материала в фоновом режиме.

Он добавляет команды вставки, обновления и удаления в DataAdapter. Таким образом, без него вы будете разбиваться и гореть, если вы не добавите эти команды самостоятельно в DataAdapter.

+0

-1: как это отвечает на вопрос? –