首页 新闻 会员 周边

检查表中数据是否重复问题

0
悬赏园豆:20 [已关闭问题] 关闭于 2010-01-04 13:04

当一个datatable的数据插入数据库,检查记录是否有重复什么方式效率好一点,我想了两条,一是循环datatable里的数据,每次与数据库连接,判断是否存在;二是把数据库里的数据取出放到一个datatable里,然后再用循环判断记录是否在dataview.RowFilter里,如果有跳出,继续循环下一条,那个好些?

问题补充: 第一种方法感觉不是很好,因为如果要插入的数据很多,需要频繁的与数据库交互;第二种方法也不好,因为如果数据库里的数据很多,提出来放到datatable里还是占用很多的内存的,而且dataview.RowFilter里面估计也是循环,效率估计也不高。有没有一种更好的方法,存储过程能解决吗,最好举个例子,我是个初学者,存储过程一点都不熟。。。
fantasy2的主页 fantasy2 | 初学一级 | 园豆:180
提问于:2009-12-31 13:03
< >
分享
所有回答(4)
0

后者,

表里面不是有主键么,直接用datatable.select的方法去查询主键值,不是更好?

振轩 | 园豆:325 (菜鸟二级) | 2009-12-31 13:31
如果从数据库提取出来的数据很庞大,是不是很占用空间;再就是datatable.select估计也是个循环查询,效率不高。。。
支持(0) 反对(0) fantasy2 | 园豆:180 (初学一级) | 2009-12-31 14:25
0

有个馊主意:

取数据库的出来, 然后Merge一下~

看看数量变化~

 

纯YY, 没有编码试验。

当是提供思路好了。

undefined | 园豆:898 (小虾三级) | 2009-12-31 13:54
这样的话感觉只能得到数量的变化,我想要的哪条记录重复。。。
支持(0) 反对(0) fantasy2 | 园豆:180 (初学一级) | 2009-12-31 14:27
0

这个实际也就是ADO里选择用DateSet还是用Read 的区别了,一个断开式链接,一个实时的链接,两种都可以,不过建议选择用楼主的后者,把数据库里的数据取出放到一个datatable里

死神的背影 | 园豆:667 (小虾三级) | 2009-12-31 13:55
如果数据库取出的datatable很庞大,占用空间,而且也是循环比较,感觉效率不高。。。
支持(0) 反对(0) fantasy2 | 园豆:180 (初学一级) | 2009-12-31 14:29
0

建议写一个存储过程,在里面使用查询来匹配是否存在相同的数据,这样会更好一点。

学而思,不进则退 | 园豆:419 (菜鸟二级) | 2009-12-31 14:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册