【发布时间】:2016-04-01 05:32:24
【问题描述】:
目前,我在 Visual Studio 中的程序将我的数据从我的转发器动态添加到我的数据库中。
现在我需要添加我在中继器之外手动收集的 ID、EventId 和 FormId。
我需要添加这个:
sqlCmd.Parameters.Add("@EventId", SqlDbType.Int).Value = eventId;
sqlCmd.Parameters.Add("@FormId", SqlDbType.Int).Value = formId;
但是,我的代码是如何设置的,当我添加以下代码时会出错:
附加信息:过程或函数“spInsFormRegistrant” 需要未提供的参数“@EventId”。
工作代码(已注释掉错误代码):
protected void BtnSubmit_Click(object sender, EventArgs e)
{
using (SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["Events2"].ConnectionString))
{
sqlConn.Open();
using (SqlCommand sqlCmd = new SqlCommand())
{
//sqlCmd.Parameters.Add("@EventId", SqlDbType.Int).Value = eventId;
//sqlCmd.Parameters.Add("@FormId", SqlDbType.Int).Value = formId;
foreach (RepeaterItem rpItem in RepeaterForm.Items)
{
Label lblDisplayName = rpItem.FindControl("lblDisplayName") as Label;
Label lblColumnName = rpItem.FindControl("lblColumnName") as Label;
TextBox txtColumnValue = rpItem.FindControl("txtColumnValue") as TextBox;
if (txtColumnValue != null)
{
sqlCmd.Connection = sqlConn;
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.CommandText = "spInsFormRegistrant";
sqlCmd.Parameters.Clear();
sqlCmd.Parameters.Add("@ColumnName", SqlDbType.NVarChar).Value = lblColumnName.Text;
sqlCmd.Parameters.Add("@ColumnValue", SqlDbType.NVarChar).Value = txtColumnValue.Text;
sqlCmd.ExecuteNonQuery();
}
}
}
}
PnlNone.Visible = false;
PnlExist.Visible = false;
PnlSuccess.Visible = true;
PnlFail.Visible = false;
}
所以我只需要知道在哪里添加@EventId 和@FormId 以使其正常运行。每次我尝试它,它都不起作用。为了不产生错误,我必须遗漏一些小东西。或者可能是我的存储过程有问题...?
存储过程
ALTER PROCEDURE [dbo].[spInsFormRegistrant]
-- Add the parameters for the stored procedure here
@EventId int,
@FormId int,
@ColumnName varchar(100),
@ColumnValue varchar(100)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
declare @Query nvarchar(4000)
declare @ParmDefinition nvarchar(500);
set @Query = 'INSERT into Registrant(DateCreated,EventId,FormId,'+ (@ColumnName) +') values (CURRENT_TIMESTAMP, @EventId, @FormId, @ColumnValue)'
set @ParmDefinition = N'@ColumnValue varchar(100)'
exec sp_executesql @Query, @ParmDefinition, @ColumnValue = @ColumnValue
END
【问题讨论】:
标签: c# asp.net sql-server stored-procedures repeater