Использование SqlCommandBuilder в ASP.NET - PullRequest
0 голосов
/ 03 октября 2009

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

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

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();
    }

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

Ответы [ 2 ]

0 голосов
/ 20 июня 2010

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

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

0 голосов
/ 03 октября 2009

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

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

...