高难度的空值保存问题

ljfluan 2006-10-13 03:11:41
我使用GridView 的update来修改点数据,其中有几个数据需要保存为空字符串,数据库不接受空值,但是保存过程中报错提示无法插入NULL。
我设置该列的 ConvertEmptyStringToNull="False" 再次保存仍然报错
我在RowUpdating方法里面设置跟踪,通过TypeName取得要保存的值为 string
无奈继续设置
在数据源里面该列设置 ConvertEmptyStringToNull ="False" 再次测试仍然报错
我实在无奈了,是哪儿出了问题,怎么跟踪能查出来啊
我把报错信息贴上来,各位大侠帮我看看有什么办法:

[SqlException (0x80131904): 不能将值 NULL 插入列 'cRow',表 'LogisticsTrack.dbo.SYSMenu';列不允许有空值。UPDATE 失败。
语句已终止。]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +95
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +82
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +346
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +3244
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +186
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +1121
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +334
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +407
System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +149
System.Web.UI.WebControls.SqlDataSourceView.ExecuteDbCommand(DbCommand command, DataSourceOperation operation) +493
System.Web.UI.WebControls.SqlDataSourceView.ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues) +915
System.Web.UI.DataSourceView.Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback) +179
System.Web.UI.WebControls.GridView.HandleUpdate(GridViewRow row, Int32 rowIndex, Boolean causesValidation) +1140
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +835
System.Web.UI.WebControls.GridView.OnBubbleEvent(Object source, EventArgs e) +162
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +56
System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source, EventArgs e) +118
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +56
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +107
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +175
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +31
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +32
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +244
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3840

...全文
156 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
blues-star 2006-10-16
  • 打赏
  • 举报
回复
SqlDataSource1.UpdateParameters[0].ConvertEmptyStringToNull = false;

设数据源的那个属性,设Control的没用
blues-star 2006-10-16
  • 打赏
  • 举报
回复
http://msdn2.microsoft.com/en-us/library/ms366709.aspx
blues-star 2006-10-16
  • 打赏
  • 举报
回复
System.DBNull
ljfluan 2006-10-16
  • 打赏
  • 举报
回复
自己顶
ljfluan 2006-10-13
  • 打赏
  • 举报
回复
有人能解答吗 自己顶一下
ljfluan 2006-10-13
  • 打赏
  • 举报
回复
一楼 我需要保存 "" datagrid 自动把我得""转化为NULL了 后面我作的一系列设定是要求服务器控件把空的input作为""内容保存 而不是作为NULL保存 各位可能还没太理解我的问题
我没有写查询sql字符串,直接通过数据绑定,按微软的说法这个应该可以通过设置来完成的此项功能。
  • 打赏
  • 举报
回复
sorry,没有仔细看问题。

我从来不使用数据源的update,这个问题没有把握就不做回答了。

我仅仅使用数据库进行查询,而所有更新操作都通过ORM层处理。建议项目设计者也如此,这是最省事的方法(先难后易而且一劳永逸)。
  • 打赏
  • 举报
回复
数据库查询要这样写:

select fieldA,fieldB,isnull(fieldC,''),isnull(fieldD,0) from table where ...

其中, fieldA、fieldB在字段定义上限制空值,所以不做处理。fieldC是字符型的, fieldD是数值,他们的查询都对空值进行处理。
myminimouse 2006-10-13
  • 打赏
  • 举报
回复
同意楼上的
hz890 2006-10-13
  • 打赏
  • 举报
回复
字段值=""
空字符串""与null是不同的

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧