无法将值NULL插入列' module_desc'

时间:2015-11-03 13:47:28

标签: c# mysql asp.net

我有另一篇文章,我实施了用户建议的更改,因此修复了我的问题,能够更新我的列表视图,但我仍然收到以下错误

  

无法将值NULL插入列' module_desc',表' E:\ SVN   网站拷贝\ CIT \ CIT5 \ APP_DATA \ UNIDB.MDF.dbo.modules&#39 ;;专栏   不允许空值。更新失败。声明已经终止。

以下是我目前的代码......

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

1 个答案:

答案 0 :(得分:0)

您的错误消息是自解释的,列module_desc不允许空值。要么必须允许列中的空值,要么传递默认值。我怀疑您的代码正在发生的是用户正在输入一个空文本,默认情况下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