有一个表url字段是唯一的,于是我把url字段建索引并设为是唯一的,现在有两种方法向表插入记录:(使用哪种更好呢?)
方法一:string sql = "select id from table where url = @url";
int id = db.table.where(t=>t.url = @url).select(t=>t.id).FirstOrDefault();
if(id>0){
 sql= "insert into (....)"
}方法二:try{
sql= "insert into (....)"
...
}catch{
return false;
}
一种是先查找url是否存在再执行插入,一种是用try...catch..,如果报错证明url已存在,请问哪一种方法更好一些呢?

解决方案 »

  1.   

    两种都不好方法一 思路是可以的,但要将两条语句放在一个事务中执行,减少数据库链接
      

  2.   

    为什么不用个自动增长的主键呢
      

  3.   

    理论比较第一种好,我们也常常用第一种,像一楼所说的,也不错,是最好的结果了,如果楼主会的话
      

  4.   

    看你要什么?  两种  你写的我感觉就是  效率换时间  和时间换效率的问题
      

  5.   


    能说说为什么吗,第二种方法看上去做少一步工作呀,不是更快吗?
      

  6.   

    抛出异常对性能有损耗,而这个异常是可以避免的