问题描述
在插入一个数据前,需要对数据库中是否存在进行判断比如:插入一个人员的信息,需要查看此人是否已经存在这样的一个过程是两次打开SQLCONNECTION吗?第一次:使用SELECT进行重复性检查第二次:进行插入操作大家都是这样操作的吗?
解决方案
解决方案二:
没错,就是这样做的~
解决方案三:
用存储过程就只需要一个了
解决方案四:
麦子,可以具体说一下吗对存储过程不熟悉
解决方案五:
不用存储过程也只需要一个.INSERTINTOtablename(key,otherfields,...)values(keyvalue,othervalues,...)WHERENOTEXISTS(SELECTkeyFROMtablenameWHEREkey=keyvalue)
解决方案六:
UP
解决方案七:
给表的字段建立唯一约束就可以了。
解决方案八:
楼主问的是插入前吧?不是插入时吧?
解决方案九:
用存储过程还是比较好的
解决方案十:
to:xs8577插入之前进行的判断防止出现重复的情况toxuyugen存储过程是不是就是把判断和插入,放在一起,实际上存储过程的内部也是先进行一个查询的判断,然后再进行一个插入的操作?
解决方案十一:
引用4楼bwangel的回复:
不用存储过程也只需要一个.INSERTINTOtablename(key,otherfields,...)values(keyvalue,othervalues,...)WHERENOTEXISTS(SELECTkeyFROMtablenameWHEREkey=keyvalue)
这个比较好
解决方案十二:
给你看个存储过程,就明白了CREATEprocadd_about(@Namevarchar(50),@iReturnintoutput)asselect*fromaboutswhereWebName=@Nameif(@@rowcount>0)beginset@iReturn=0--该值已存在,插入失败endelsebegininsertintoaboutsvalues(@Name)set@iReturn=1--插入成功endGO
解决方案十三:
引用11楼leehniu的回复:
SQLcode给你看个存储过程,就明白了CREATEprocadd_about(@Namevarchar(50),@iReturnintoutput)asselect*fromaboutswhereWebName=@Nameif(@@rowcount>0)beginset@iReturn=0--该值已存在,插入失败endelsebegininsertintoaboutsvalues(@Name)set@iReturn=1--插入成功endGO
一般这样写
解决方案十四:
引用11楼leehniu的回复:
SQLcode给你看个存储过程,就明白了CREATEprocadd_about(@Namevarchar(50),@iReturnintoutput)asselect*fromaboutswhereWebName=@Nameif(@@rowcount>0)beginset@iReturn=0--该值已存在,插入失败endelsebegininsertintoaboutsvalues(@Name)set@iReturn=1--插入成功endGO
解决方案十五:
打开一次SQLCONNECTION也可以啊先执行判断SQL,再根据结果执行插入SQL
解决方案:
using(SqlConnectionconn=newSqlConnection(SqlHelper.DBConnectionString{stringpd="selectIDfromtbwhereID=3";if(SqlHelper.ExecuteScalar(conn,CommandType.Text,pd)!=null){return-1;}else{returnSqlHelper.ExecuteNonQuery(conn,CommandType.Text,插入SQL);}}这样时要两此打开,但是这种方式还是可取的,当然你可以写成一条SQL语句,就是判断和插入SQL语句组合在一起,比如:ifexists(selectFormIDfromlcFormStylewhereFormID=2)insertintolcFormStyle...GO
解决方案:
写存储过程.
解决方案:
引用4楼bwangel的回复:
不用存储过程也只需要一个.INSERTINTOtablename(key,otherfields,...)values(keyvalue,othervalues,...)WHERENOTEXISTS(SELECTkeyFROMtablenameWHEREkey=keyvalue)
四楼正解,我们是用的这个