在 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?