项目错误列表之三

    1.  前几天的一个错误让我郁闷了好一阵子,我往表格里手动修改测试数据(DBMS:SQL Server 2000):数据库有一个字段允许为空,我需要将该字段不为空的记录查出来,由于我的Insert语句将""插入数据库,导致这个字段为空白,却不是我所期望的<NULL>。那么我写在查询语句里面的,**** is not null,达不到理想效果,于是,我手动往里面输入<NULL>,当时只觉得很别扭,还没意识到错误。

    时间紧,我的代码在老大那测试没有问题(他连的不是我的数据库),而我也渐渐将这件事情丢到了一边。一两天后,新的任务来,需要在前面的基础上,添加新的功能,结果我导出查,怎么都找不出原因为什么我这边不该显示的显示出来了。我后来将问题定位到这张表格上,没道理啊!所有字段都为<NULL>,为什么一个都查不出来。找来老大,陈述我的问题,他在我展示表格数据的时候,瞄了一眼,抢过鼠标,在字段上点了两下,然后问我:“看出毛病没?”

    我摇摇头,他又点了点其他为<NULL>的字段,我才发现,当字段为<NULL>时,鼠标点上去,<NULL>会消失,而我输入的"<NULL>"不会。这时,我才回忆起前几天的情况——这个字段保存的值是"<NULL>"而不是NULL。

    “Ctrl+0” 这就是让字段为NULL的方法。

    同样,还有一个值得注意的问题是,如果你不小心将换行符,插入了数据库。c#里面是"/r/n"转到sql脚本中,成了char(13)+char(10)(有兴趣的朋友可以试一下,执行这条语句“insert into user(username)  values('a' + char(13) + char(10) + 'b')”),然后,你到预览表格时候,将光标移动到该字段,摁上下方向键,就可以看到a与b交替出现了(数据库得有user(username)表)。

    而如果你将换行符接在字符串末尾,不注意的话,将始终得不到匹配的效果。

    2. 日期格式化:我们经常会碰到这样一个问题,数据库保存的是DateTime对象,即保存了日期同时保存了时间,而我们显示在DataGrid时,需要将时间去除,通常的做法是,在绑定时,ItemDataBind事件中,将该字段Convert.ToDataTime(),然后再ToString("yyyy-MM-dd"),这样比较麻烦,你要做两步,首先要判断它为非页眉和非页尾:

if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)

而后做上述处理。而控件已经替我们做了这一步,只需要在控件中添加一个属性即可:

<asp:BoundColumn DataField="RecTime" HeaderText="到货日期" DataFormatString="{0:yyyy-MM-dd}"></asp:BoundColumn>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值