在绑定的控件中对数据库中值进行修改时碰到的一个问题。
比如,在用户名的字段里,是绝对不能存在重复值的。
但如果我绑定在datagrid或者TextBox里面进行修改时,难免操作者不会输入相同的值,怎么捕捉到这个错误呢?请大家帮忙解答一下。
我试过用UniqueConstraint加入到dataset中,它也确实工作了,但是它是以弹出一个对话框的形式出现的,这样的对话框不知道算不算异常,我也不知道该catch哪一个异常,反正这样显得很不舒服的。谁有更干净更优雅的方法吗?
多谢!
问题点数:0、回复次数:9Top
1 楼rock1981(呵呵呵)回复于 2003-12-02 18:38:02 得分 0
不知道可不可行
在TextChanged的时候进行效验Top
2 楼zhpsam109(JACKY.昊昊)回复于 2003-12-02 18:56:11 得分 0
保存到数据库的时候验证该姓名是否存在 select * from tbale where name='youname'
用这个填充dataset,如果dataset.rows.count>0则重复!Top
3 楼o1o(两蛋一枪)回复于 2003-12-02 19:16:29 得分 0
楼上的做法可能不太好,因为不好处理部分相同的值:
例如:如果想输入用户meimei007将会在输入一半时符合值meimei、meimei0、meime等。
改进办法:在Leave时校验。
Top
4 楼myhex(小乙)回复于 2003-12-03 10:06:04 得分 0
TO rock1981() ,o1o(莊囸鐵):
我现在的问题是如何用一种简当有效的方法校验?
TO zhpsam109(小昊子):
我觉得你的方法不可取,因为数据己经被载入下来了,没必要再去数据源进行查找.
还不如直接对datatable进行遍历,但这样似乎也不好看.
实质上向dataset里添加UniqueConstraint时,.net在你输入重复值时己经报告错误了,只不过报告的方式不是throw异常,而是跳出一个莫名其妙的对话框提示在确认时发生错误:
标题:Error when committing the row to the original data store.
内容: Column '列名' is constrained to be unique. Value '己存在的值' is already present. Do you want to correct the value.
我觉得都有些遗憾,用得很不舒服。我猜想.net应该对此作了设计的,可我不知道具体怎么弄.
Top
5 楼myhex(小乙)回复于 2003-12-03 12:03:34 得分 0
帮忙!推者有分啊!!Top
6 楼lee_cl(豆腐·BombEr)回复于 2003-12-03 12:17:49 得分 0
如果是大型网站的话,用户比较多,还是用zhpsam109(小昊子)的方法,因为不能确定数据的完整性和准确性,如果一般的网站的话,你可以在DataSet里面查。我下边试试。Top
7 楼myhex(小乙)回复于 2003-12-03 12:30:35 得分 0
有没有一个稍具建设性点的回答啊?
Top
8 楼lee_cl(豆腐·BombEr)回复于 2003-12-03 12:38:19 得分 0
用select into最快,数据量小的话,可以忽略了,select和select into差不多。
输入用户名后直接到数据库验证,我觉得这个就是最简洁的方法了。我不是很理解你的意思,sorry。Top
9 楼myhex(小乙)回复于 2003-12-04 10:26:17 得分 0
疯了,我要疯了Top




