无法将值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

无法将值NULL插入列';module_desc';

您的错误消息不言自明,列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