在 ASP.NET 中使用 SqlCommandBuilder

Posted

技术标签:

【中文标题】在 ASP.NET 中使用 SqlCommandBuilder【英文标题】:Use of SqlCommandBuilder in ASP.NET 【发布时间】:2009-10-03 05:21:00 【问题描述】:

我已使用以下代码将输入到 Web 表单的反馈添加到数据库中。

代码运行良好。但是当我尝试删除这个语句时

SqlCommandBuilder objcb = new SqlCommandBuilder(objDa);

我收到一个错误,我的意思是它正在执行 else 部分。

谁能告诉我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();
    

有没有办法显示特定的错误消息,例如如果用户输入字符串值而不是整数值,它应该将消息显示为“输入字符串没有以正确的格式输入?

【问题讨论】:

顺便说一句,你可以使用String.IsNullOrWhiteSpace() 不是在 2009 年 10 月,他不能! 【参考方案1】:

永远不要使用catch (Exception)。它隐藏了问题。如果抛出异常,则说明存在严重错误。你需要了解它。

删除整个 try/catch 块(将代码保留在其中!)。然后再次运行您的代码。如果有异常,您将在错误页面上看到它。如果没有,则使用事件查看器在 Windows 事件日志中查找来自“ASP.NET”源的警告消息。它应该包含完整的异常。

【讨论】:

虽然我同意您回答的精神,但告诉某人“永远不要使用 catch(Exception)”对我来说似乎有点误导。我想我会鼓励人们正确地学习如何有效地使用 try/catch 块,并了解何时适合处理异常,以及何时让它们冒泡并由运行时处理。 在几乎所有情况下,都应该处理异常。 OP 捕获异常的方式尤其如此,然后甚至没有显示它。我宁愿告诉某人从不,并等到他们知道在某些情况下他们必须捕获异常,而不是说“也许”并让他们想,“所有时间”。 就像我说的,我同意你评论的精神。我认为最大的问题是太多示例不必要地捕获和打印异常,所以人们只是剪切和粘贴,很少有人知道异常处理应该如何工作。【参考方案2】:

最终的答案是,你所说的那一行是在后台做一堆事情。

它正在向 DataAdapter 添加插入、更新和删除命令。因此,如果没有它,您将崩溃和烧毁,除非您自己将这些命令添加到 DataAdapter。

【讨论】:

以上是关于在 ASP.NET 中使用 SqlCommandBuilder的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET Core 6.0 中使用 Serilog

如何在asp.net c# web应用程序中使用asp.net vb页面

如何在 ASP.Net Core 中使用 IHostedService

使用命令行如何在 ASP.NET 中首先从 DB 搭建脚手架 - 而不是 ASP.NET Core MVC?

在 Asp.net / Asp.net mvc 中进行实时 Web 体验的方法是啥? [关闭]

如何在使用 HttpClient 使用 Asp Net Web Api 的 Asp Net Mvc 中提供实时数据?