无法将值NULL插入列';module_desc';
本文关键字:desc module 插入列 NULL | 更新日期: 2023-09-27 18:20:26
我有另一篇文章,我在其中实现了用户建议的更改,因此可以更新我的列表视图来解决我的问题,但我仍然收到以下错误
无法将值NULL插入表"E:''SVN"的列"module_desc"中网站副本''CIT''CIT5''APP_DATA''UNIDB.MDF.dbo.modules';列确实不允许null。UPDATE失败。语句已终止。
以下是我当前的代码。。。
asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:UniString %>"
SelectCommand="SELECT [module_id], [module_name], [module_desc], [module_units]
FROM [modules]"
UpdateCommand="UPDATE [modules] SET [module_name]= @Module_Name, [module_desc]=@Module_Description,
[module_units]=@Module_Units WHERE [module_id] = @Module_ID" >
<UpdateParameters>
<asp:Parameter Name="Module_Name" Type="String" />
<asp:Parameter Name="Module_Description" Type="String" />
<asp:Parameter Name="Module_Units" Type="Int32" />
<asp:Parameter Name="Module_ID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1" DataKeyNames="Module_ID">
一切似乎都是完美的代码,所以我不知道如何克服这个问题。
任何帮助都会很棒。。。
RD
您的错误消息不言自明,列module_desc
不允许空值。要么必须允许列中有null,要么传递默认值。我怀疑您的代码中发生的情况是用户输入了一个空文本,默认情况下SqlDataSource
控件会将其转换为Null
。您必须将属性ConvertEmptyStringToNull
设置为false,如下所示:-
<UpdateParameters>
<asp:Parameter Name="Module_Name" Type="String" />
<asp:Parameter Name="Module_Description" Type="String" ConvertEmptyStringToNull="false"/>
<asp:Parameter Name="Module_Units" Type="Int32" />
<asp:Parameter Name="Module_ID" Type="Int32" />
</UpdateParameters>
这不会将空文本转换为Null
,并且会更新数据库中的空文本本身,而不是Null
。