因为插入重复键值触发的错误代码(err.num)是可变的,所以我的方法是判断err.descript中是否包含Primary Key字符串,但是我认为这不太正规,请教各位高手:有没有更好的判断方法?
解决方案 »
- 【发个有意思的文章】无意中拖了一下"SB",发现一个关于SB的文章,比较NB~~~~
- access 远程访问怪问题:
- 在同一个数据库中,将一个表中信息,写入另一个空表中!(字段类型一样)
- 用华表5.1怎么实现记录显示超出时的自动分页呢?(急,请各位大虾帮忙看一下,谢谢)
- end 和unload me有什么区别呢????
- 什么叫公共模块服务器函数的系统调用号?
- 如何读取RichTextBox控件中的字体信息
- 在VB中实现客户端程序自动取得服务端IP并连接服务端程序
- 请教什么“OO experience”
- 如何截取屏幕画面?
- 請問DataGrid怎麼跟其他控件組閤顯示???
- 如何画y=x^2+x+1这样的曲线?最好用mschart做,100分答谢!
selec * from table where 关键字='你输入的'
如果查到结果就说明是重复了。明白了?
@ID int,
@Date datetime, ---传入的参数
@WorkMode char(1),
@No varchar(10) ASif exists(Select * from table where ID = @tID ) ---存在时
update table set 更新的内容 where 条件
else ----不存在时插入
insert into table (fields1……) values(@one,……)这样比较好,因为所有的修改与插入都由数据库自己完成,你只管将参数往里传
err:
if err.number=重复错误编号 then msgbox "该姓名重复!"
2,建议写储存过程create procedure st_instervalue
@name as varchar(20)
as
decalre @iid int
select @iid=id from 表名 where name=@name
if @iid is not null return 1
insert into 表名(name) values(@name)
return 0
直接在vb里面调用该过程,得到返回值
1为该姓名重复
0为插入成功3,在vb里面也可以用一条语句得到是否重复
dim name as string
rs.open "select id from 表名 where name'" & name & "'"
if not rs.eof then
rs.close
msgbox "该姓名重复!"
else
rs.close
rs.open "insert into 表名(name) value('" & name & "')"
end if
1、先查询是个好办法,但是对于这样的情况效率可能比较低,如:可以预期,插入的记录重复的机会非常少,但是有可能重复,这时如果插入的记录数很大的话,效率会比较低。而如果直接插入后,判断错误码的处理效率就会高得多。
2、我不太喜欢使用存储过程,我也知道存储过程有很多优点,但是它也有一些缺点,如可移植性差,如果升级的话,还要更新数据库,太麻烦。再说了,直接使用SQL语句,数据的处理也是由数据库来完成,只是没有将语句预编译而已。
3、我的主要目的是想知道,一般情况下,怎样判断返回的错误码才是最正确的方法(针对重复键值,因为重复键值的错误码不固定)。