2015-11-03 109 views
0

我有另外一个帖子里,我实现用户建议这样解决我的问题与能更新我的列表视图的变化,但我仍然得到以下错误无法将NULL值插入列“module_desc”

无法将值NULL插入'module_desc'列中,表'E:\ SVN WEBSITE COPIES \ CIT \ CIT5 \ APP_DATA \ UNIDB.MDF.dbo.modules';列确实是 不允许有空值。更新失败。该语句已终止。

下面是我当前的代码...

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][email protected]_Description, 
    [module_units][email protected]_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

回答

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

+0

Rahul,它仍然带来了与添加的那段代码相同的错误,例如,当我编辑第一个模块,并说我将测试写入字段并尝试更新它时,会出现错误out ... – ryanfc2

+0

@ ryanfc2 - 你确定你没有传递空字符串吗?尝试运行一个sql server分析器并查看它传递的是什么查询。 –

+0

我该怎么做呢?我只是使用SQL连接来连接数据库,然后使用列表视图来查看我希望看到的数据库中的表,列表视图的作品在于它显示我想要的数据,但是当我去编辑它并提交它给出了这个错误的变化,不知道为什么它执行null,因为当我更新描述时,我将更多的数据添加到已经存在的内容 – ryanfc2

相关问题