首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

重构个人版机房收费系统异常积累与解决方案 一

2013-03-21 
重构个人版机房收费系统错误积累与解决方案一系统经过自己的坚持不懈的努力终于做完了,接下来总结总结经验

重构个人版机房收费系统错误积累与解决方案 一

系统经过自己的坚持不懈的努力终于做完了,接下来总结总结经验教训,颗粒归仓啦


1:在做注册新的学生(卡号时)出现以下错误



原因:先看我的主外键关系:

重构个人版机房收费系统异常积累与解决方案    一



解析理论:外键约束,比如B表存在一个字段b,有外键约束,引用于A表的主键a,那么在向B表插入数据时,字段b必须为A表中a已经存在的值,如过向b中存放一个a中没有的值,则会报违反外键约束。

,所有在向数据库中写入数据时先向主键表中写数据,(学生表-->卡表-->充值记录表)


正确写法:



原因:不要过分的相信垃圾回收机制,有时处理不好也报错,查了好多资料,发现原因很多的,具体原因自己进步学习中

现在程序没有这个问题了,具体原因不知道什么情况,请大侠帮忙哈.


3:从字符串""到类型double的转换无效

重构个人版机房收费系统异常积累与解决方案    一



解决方法:字符串是不能直接相互加减的,它是字符的拼接了,我们需要当字符串中没有值时需要加强制类型转换




原因:查的的资料:

1) 因为架构信息已经硬编码进MyCustomers.cs,如果发生改动的话,必须重新生成。
2) 比如从拥有30个字段的某个表中选择3个字段A,B,C,专门为这三个字段生成一个强类型的DataSet1是可以的,但是倘若另一个方法需要选择字段C,D,E,还需要为这三个字段专门生成一个强类型的DataSet2。倘若select的字段由使用者自行定制,字段的一个组合就了不得了。
3) 为避免上面使用多个强类型DataSet的情况,我们可以只使用一个强类型DataSet,这样每次不管我们Fill多少个字段,都填充进一个强类型DataSet。
但这又带来了新的问题:
i)空间的浪费(特别是对于多表连接的情况)。可以写代码测试一下30个string字段中只填充1,2个占用的空间相对大小(使用强类型DataSet比弱类型占用内存大数倍不止)。
ii)约束的违反。强类型在生成时已经把数据库中的约束(如非空,FK等)添加了进来,这样在只填充部分数据时可能会发生违反约束的异常。
比如col1,col2,col3,col4都要求不为空,但是我只select了col1,col2进入强类型DataSet,这样对应记录的col3,col4字段均为空,违反了非空约束,会抛出异常并提示:
未处理的“System.Data.ConstraintException”类型的异常出现在 system.data.dll 中。

自己解决方案:需要充值编译生成就OK了

1楼liutengteng130昨天 19:43
继续积累加油!

热点排行