问题是我最近做系统碰到这样一个问题:
假设有一个文本框需要输入一个高度,我也在代码中设定了它只能输入整型,或者不输入,
在数据库中这个字段设置为int型。现在假设用户不输入,而且我对程序和存储过程也没有
任何限定的情况,那么这个数据库中将写入0,这就出现了问题,因为用户本身这里是没有输入的,
例如用DataGrid显示出来高度就是0(虽然我可以让它等于0的时候不显示),但是假设用户真
的输入是0的时候那去掉又是不合理的。我经过和朋友一起讨论的出一些方法但是我觉得都不是完美:
方法1:通过程序的代码来判断是否为空,如果为空则对这个字段不插入,这个方法虽然可以很好
的实现这个过程,但是同样面临一个问题,假如需要插入的当中有非常多的非字符串型的时候
那每个字段都需要判断,这样的话就要调用重载很多调用存储过程的方法或者写很多sql语句,也
不合理。
方法2:在存储过程中判断输入的值是否为0,当为0的时候插入null,这种方法同样不好,因为
就像前面说的,判断是否为0有两种可能,一种是用户输入的,一种是没有输入,这个无法
判断。
方法3:也是我最后没办法用的,就是当为空的时候把值设置为-1,然后在存储过程中判断为-1
的时候插入null,但是这样也很麻烦,我觉得是没有办法的办法。还有一个方法我不知道怎么实现,据说好像可以设置一个空整型,就是比如我可以在用户输入空
的时候把int型数据的值赋空整型,如果存入数据库的值为null,这样当然我觉得是最好的。不知道有没有人考虑过这个问题,或者看了我说的后有什么好的办法,我真的对这个简单的
问题不知道怎么解决有点郁闷,希望大家提提看法。