【问题标题】:Trying to insert a row using stored procedured with a parameter binded to an expression尝试使用带有绑定到表达式的参数的存储过程插入行
【发布时间】:2010-03-08 19:58:30
【问题描述】:

环境: asp.net 3.5(C#和VB),Ms-sql server 2005 express

表格

表:表用户 ID(主键) 用户名

表:userSchedule ID(主键) thecreator(外键 = tableUser.ID) 其他领域

我创建了一个过程,它接受参数用户名并获取用户 ID 并在 Table:userSchedule 中插入一行

问题: 使用带有 datalist 控件的存储过程,通过使用下面的语句传递当前用户名仅从数据库中获取数据工作正常

protected void SqlDataSourceGetUserID_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        e.Command.Parameters["@CurrentUserName"].Value = Context.User.Identity.Name; 
    }

但在使用 DetailsView 插入时显示错误

Procedure or function OASNewSchedule has too many arguments specified. 

我确实用过

protected void SqlDataSourceCreateNewSchedule_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        e.Command.Parameters["@CreatedBy"].Value = Context.User.Identity.Name;
    }

DetailsView 属性: 自动生成字段:关闭, 默认模式:插入, 它显示了过程中可能不需要的所有字段,例如过程中不需要的 ID(主键)和 CreatedBy(用户 ID)字段。

所以我尝试从详细信息视图中删除 2 个字段并显示错误

Cannot insert the value NULL into column 'CreatedBy', table 'D:\OAS\OAS\APP_DATA\ASPNETDB.MDF.dbo.OASTest'; column does not allow nulls. INSERT fails. The statement has been terminated.

由于某些原因,参数值没有被设置。

有人能理解这一点并提供帮助吗?

【问题讨论】:

    标签: sql sql-server stored-procedures parameters asp.net-3.5


    【解决方案1】:

    好吧,我错了,我不知道委托是如何工作的以及它是什么。 而不是 SqlDataSourceCreateNewSchedule_Selecting(....) 我应该使用 SqlDataSourceCreateNewSchedule_Inserting 来修改参数,毕竟需要在插入而不是选择时设置参数。

    【讨论】:

      猜你喜欢
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多