程序开发 > C# > 正文

至少一个参数没有被指定值(执行 SQL 语句错误)

亮术网 2020-08-20 本网原创

在 C# 中执行 SQL 语句,有时会报“至少一个参数没有被指定值”这样的错误。这个错误提示十分含糊,看不出来具体指那里,如果从未遇到这样的错误,排查起来有点困难。

“至少一个参数没有被指定值”这类错误通常出现在查询语句(即 Select 语句)中,不会出现在插入或更新语句中。下面先看具体错误,再看解决办法。

 

一、“至少一个参数没有被指定值”的错误

假如执行以下 SQL 语句:

string strSQL = "Select Title,model,detail,adddate From products Order By adddate Desc";

 

异常详细信息: System.Exception: 至少一个参数没有被指定值。

源错误:

行 203:            catch (Exception e)
  行 204:            {
  行 205:                throw new Exception(e.Message);
  行 206:            }
  行 207:            finally

源文件:  D:\Webdata\classes\SqlExe.cs    行:  205

 

堆栈跟踪:

[Exception: 至少一个参数没有被指定值。]
   EpWeb.privates.classes.SqlData.dataTable(String sqlstr) in D:\Webdata\classes\SqlExe.cs:205
   EpWeb.feedback.index.BindFeedback() in D:\Webdata\product\index.aspx.cs:24
   EpWeb.feedback.index.Page_Load(Object sender, EventArgs e) in D:\Webdata\product\index.aspx.cs:16
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnLoad(EventArgs e) +91
   System.Web.UI.Control.LoadRecursive() +74
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207

 

二、“至少一个参数没有被指定值”的解决办法

其实错误很简单,是一个字段弄错了,数据库中没有定义 detail 字段,而是定义了 content 字段,所以把 detail 改为 content,问题就解决了,修改后的 SQL 语句变为:

string strSQL = "Select Title,model,content,adddate From products Order By adddate Desc";

像执行 SQL 语句这类含糊其词的错误,可以用逐个排出法,首先检查 Select 这些关键字是否有误,再检查字段数据表中是否有,最后再检查排序字段是否选择出。

本文浓缩标签:SQL错误