C# 显示错误-未提供的参数除外

C# 显示错误-未提供的参数除外,c#,asp.net,sql-server-2008,C#,Asp.net,Sql Server 2008,我想执行查询,但在数据存储参数上显示错误,但未提供参数除外。请帮助我解决此问题 我的代码是- SqlConnection conn = new SqlConnection(str); conn.Open(); Console.WriteLine("TicketNo {0}", itm);

我想执行查询,但在数据存储参数上显示错误,但未提供参数除外。请帮助我解决此问题

我的代码是-

                           SqlConnection conn = new SqlConnection(str);
                           conn.Open();
                           Console.WriteLine("TicketNo {0}", itm);

                           string SwimSR = "";
                           SwimSR += "Insert into SwimSR1(Id,State,Title,Datastore,AreaId,AreaPath,PlannedStartDate,PlannedEndDate,RequestedEta,SeManTexEta,Owner,Reason,ChangedBy,ChangedDate,CreatedBy,CreatedDate,NodeName,Trio,Type,BusinessCategory,Description)";
                           SwimSR += "Values(@Id,@State,@Title,@Datastore,@AreaId,@AreaPath,@PlannedStartDate,@PlannedEndDate,@RequestedEta,@SeManTexEta,@Owner,@Reason,@ChangedBy,@ChangedDate,@CreatedBy,@CreatedDate,@NodeName,@Trio,@Type,@BusinessCategory,@Description)";
                             SqlCommand cmd = new SqlCommand(SwimSR, conn);

                             cmd.Parameters.Add(new SqlParameter("@Id",swimTicket[itm].swimTicketData.Id));

                             cmd.Parameters.Add(new SqlParameter("@State",swimTicket[itm].swimTicketData.State));
                             cmd.Parameters.Add(new SqlParameter("@Title",swimTicket[itm].swimTicketData.Title));
                             cmd.Parameters.Add(new SqlParameter("@Datastore",swimTicket[itm].swimTicketData.Datastore));
                             cmd.Parameters.Add(new SqlParameter("@AreaId", swimTicket[itm].swimTicketData.AreaId));
                             cmd.Parameters.Add(new SqlParameter("@AreaPath", swimTicket[itm].swimTicketData.AreaPath));
                             cmd.Parameters.Add(new SqlParameter("@PlannedStartDate", swimTicket[itm].swimTicketData.PlannedStartDate));
                             cmd.Parameters.Add(new SqlParameter("@PlannedEnddate", swimTicket[itm].swimTicketData.PlannedEndDate));
                             cmd.Parameters.Add(new SqlParameter("@RequestedEta", swimTicket[itm].swimTicketData.RequestedEta));
                             cmd.Parameters.Add(new SqlParameter("@SemanTexEta", swimTicket[itm].swimTicketData.SeManTexEta));
                             cmd.Parameters.Add(new SqlParameter("@Owner", swimTicket[itm].swimTicketData.Owner));
                             cmd.Parameters.Add(new SqlParameter("@Reason", swimTicket[itm].swimTicketData.Reason));
                             cmd.Parameters.Add(new SqlParameter("@ChangedBy", swimTicket[itm].swimTicketData.ChangedBy));
                             cmd.Parameters.Add(new SqlParameter("@ChangedDate", swimTicket[itm].swimTicketData.ChangedDate));
                             cmd.Parameters.Add(new SqlParameter("@CreatedBy", swimTicket[itm].swimTicketData.CreatedBy));
                             cmd.Parameters.Add(new SqlParameter("@CreatedDate", swimTicket[itm].swimTicketData.CreatedDate));
                             cmd.Parameters.Add(new SqlParameter("@NodeName", swimTicket[itm].swimTicketData.NodeName));
                             cmd.Parameters.Add(new SqlParameter("@Trio", swimTicket[itm].swimTicketData.Trio));
                             cmd.Parameters.Add(new SqlParameter("@Type", swimTicket[itm].swimTicketData.Type));
                             cmd.Parameters.Add(new SqlParameter("@BusinessCategory", swimTicket[itm].swimTicketData.BusinessCategory));
                             cmd.Parameters.Add(new SqlParameter("@Description", swimTicket[itm].swimTicketData.Description));


                           cmd.ExecuteNonQuery();
                           Console.WriteLine("added");
                           conn.Close();
使套管匹配:

... @SeManTexEta ...
cmd.Parameters.Add(new SqlParameter("@SemanTexEta", swimTicket[itm].swimTicketData.SeManTexEta));

这能解决问题吗?

您在sql命令中使用了
@SeManTexEta
,但在参数部分声明为
@SeManTexEta

正如你所看到的,这些是不同的

换衣服

cmd.Parameters.Add(new SqlParameter("@SemanTexEta", swimTicket[itm].swimTicketData.SeManTexEta));

方法也已被弃用。您可以改为使用方法。喜欢

cmd.Parameters.AddWithValue("@SeManTexEta", swimTicket[itm].swimTicketData.SeManTexEta);

在阅读了以上答案和评论之后, 请在命令参数中检查所需的
数据类型
,查看
数据存储
和数据类型

还要检查cmd.parameter类型是否不是
NULL

cmd.Parameters.Add(new SqlParameter("@Datastore",swimTicket[itm].swimTicketData.Datastore));

您好,我在数据存储区附近遇到错误。在调试过程中,我仅在该行遇到问题。这是参数化查询“(@Id int,@State nvarchar(6),@Title nvarchar(57)的错误,@Datastore nvarc'需要参数'@Datastore',但未提供该参数。@user3011964我想您在存储过程中遇到了这个错误还是什么?我想这与这个问题无关。。
cmd.Parameters.Add(new SqlParameter("@Datastore",swimTicket[itm].swimTicketData.Datastore));