我有一个gridview绑定到sqldatasource。尝试运行更新存储过程。
我一直收到这个错误...
Cannot insert the value NULL into column 'MyFKId', table 'dbo.MyTable';
column does not allow nulls. INSERT fails. The statement has been
terminated.
我知道答案似乎很明显,我试图将空值插入到一个不允许的列中。问题是,我知道我正在为MyFKId'提供价值。在我的代码中,我设置了一个断点,看到此行运行后有一个值......
dsMyDataSource.UpdateParameters.Item("MyFKId").DefaultValue = SomeId
SomeId确实有价值。它不是空的。你觉得怎么回事? SQLDataSource的设置如下......
<asp:SqlDataSource ID="dsMyDataSource" runat="server" ConnectionString="xxxxx"
SelectCommand="xxxxx" SelectCommandType="StoredProcedure"
UpdateCommandType="Text"
UpdateCommand=" Execute s_MyStoredProc @MyFKId,...@UserId">
<UpdateParameters>
<asp:Parameter Name="MyFKId" Type="Int32" />
...
</UpdateParameters>
</asp:SqlDataSource>
答案 0 :(得分:0)
请勿使用EXECUTE
来调用存储过程。使用InsertCommand
<asp:SqlDataSource ID="dsMyDataSource" runat="server" ConnectionString="xxxxx"
InsertCommand="s_MyStoredProc" InsertCommandType="StoredProcedure">
<InsertParameters>
<asp:Parameter Name="MyFKId" Type="Int32" />
...
</InsertParameters>
</asp:SqlDataSource>
使用InsertParameters设置参数。
dsMyDataSource.InsertParameters("MyFKId").DefaultValue = SomeId
无法尝试,但希望能为你解决。