System.Data.SqlClient.SqlException C#

Posted

技术标签:

【中文标题】System.Data.SqlClient.SqlException C#【英文标题】: 【发布时间】:2016-05-13 09:41:33 【问题描述】:

当我使用cmd.ExecuteNonQuery() 时,它不起作用并显示下一个错误:

    SqlCommand newUser = new SqlCommand("INSERT INTO [DinoTable] VALUES(@name,  @height, @heightscale, @weight, @weightscale, @diet, @status, @locationDis, @dayDis, @monthDis, @yearDis, @yourlocation, @dayborn, @monthborn, @yearborn, @Gender, @yourEmail, @yoname, @lastname, @getmoney); ", c);
                newUser.Connection = c;
                newUser.Parameters.AddWithValue("@name", (string)Session["Name"]);
                newUser.Parameters.AddWithValue("@height", Convert.ToDouble(Session["Height"]));
                newUser.Parameters.AddWithValue("@heightscale", (string)Session["HeightScale"]);
                newUser.Parameters.AddWithValue("@weight", Convert.ToDouble(Session["Weight"]));
                newUser.Parameters.AddWithValue("@weightscale", (string)Session["weightscale"]);
                newUser.Parameters.AddWithValue("@diet", (string)Session["diet"]);
                newUser.Parameters.AddWithValue("@status", (string)Session["status"]);
                newUser.Parameters.AddWithValue("@locationDis", (string)Session["locationDis"]);
                newUser.Parameters.AddWithValue("@dayDis", Convert.ToInt32(Session["dayDis"]));
                newUser.Parameters.AddWithValue("@monthDis", (string)(Session["monthDis"]));
                newUser.Parameters.AddWithValue("@yearDis", Convert.ToInt32(Session["yearDis"]));
                newUser.Parameters.AddWithValue("@yourlocation", (string)Session["yourlocation"]);
                newUser.Parameters.AddWithValue("@dayborn", Convert.ToInt32(Session["dayborn"]));
                newUser.Parameters.AddWithValue("@monthborn", (string)(Session["monthborn"]));
                newUser.Parameters.AddWithValue("@yearborn", Convert.ToInt32(Session["yearborn"]));
                newUser.Parameters.AddWithValue("@Gender", (string)Session["Gender"]);
                newUser.Parameters.AddWithValue("@yourEmail", (string)Session["yourEmail"]);
                newUser.Parameters.AddWithValue("@yoname", (string)Session["YourName"]);
                newUser.Parameters.AddWithValue("@lastname", (string)Session["YourLastName"]);
                newUser.Parameters.AddWithValue("@getmoney", 0);
c.Open()
newUser.ExecuteNonQuery(); 
c.Close();

完整的错误:

“System.Data.SqlClient.SqlException”类型的异常发生在 System.Data.dll 但未在用户代码中处理

附加信息:参数化查询 '(@name nvarchar(5),@height float,@heightscale nvarchar(4),@weigh' 期望 未提供参数“@monthDis”。

【问题讨论】:

会不会是null? 不,我都是从其他页面设置的 @PatrickHofman 我尝试了您的解决方案,其中一个会话成员拼写不好,现在我遇到了一个新错误:字符串或二进制数据将被截断。 您应该指定字段或完全按照数据库中列的顺序添加它们。 字符串或二进制数据将被截断:您的字段值比表上的定义字段长。检查表的定义 【参考方案1】:

好像monthDis是一个字符串,yearDis和dayDis是整数。 难道monthDis也是一个整数?

如果是这样,请尝试更改:

newUser.Parameters.AddWithValue("@monthDis", (string)(Session["monthDis"]));

到:

newUser.Parameters.AddWithValue("@monthDis", Convert.ToInt32(Session["monthDis"]));

【讨论】:

可能是更多的评论

以上是关于System.Data.SqlClient.SqlException C#的主要内容,如果未能解决你的问题,请参考以下文章