我正在尝试使用vbscript添加数据以访问数据库。我可以成功将数据添加到数据库,但是我想在将数据添加到数据库之前检查重复性。
如果在三列中的任何一列中发现重复,则应在“名称,电话和ID”列中进行检查,然后显示发现重复的消息。
下面是帮助我向数据库添加数据的代码。
sub addUser
SQL_query = "INSERT INTO dvd (timestammp,Name,Phone,Id,Cat,StartDate,agent,amount,source,conver) VALUES ('"& txtteNow.value &"','"& txtName.value &"','"& txtPhone.value &"','"& txtId.value &"','"& txtCat.value &"','"& txtStartDate.value &"','"& txtsrch.value &"','"& txtamount.value &"','"& txtsource.value &"','"& txtconver.value &"')"
conn.Execute(SQL_query
end sub
我也尝试下面的代码,但是不起作用。
SQL_query = "INSERT INTO dvd (timestammp,Name,Phone,Id,Cat,StartDate,agent,amount,source,conver) VALUES('"& txtteNow.value &"','"& txtName.value &"','"& txtPhone.value &"','"& txtId.value &"','"& txtCat.value &"','"& txtStartDate.value &"','"& txtsrch.value &"','"& txtamount.value &"','"& txtsource.value &"','"& txtconver.value &"') WHERE NOT EXISTS (Select '2' from dvd where Name = + " & txtName.value & + "
conn.Execute(SQL_query)
答案 0 :(得分:2)
为什么不尝试在名称,电话和ID中添加唯一索引?
这样数据库引擎将自动丢弃那些记录。
可能的缺点:您将不知道删除了哪个记录。
答案 1 :(得分:1)
我的解决方案非常复杂:使用包含一个记录的虚拟表中的INSERT INTO ... SELECT
查询,然后在其中使用NOT EXISTS
。
我也将使用参数,您确实应该自己做些以避免SQL注入问题。
CurrentDb
是DAO数据库对象。
我将仅使用3个字段来简化解决方案。
With CurrentDb.CreateQueryDef("", "INSERT INTO dvd (timestammp,Name,Phone) " & _
" SELECT p1, p2, p3" & _
" FROM (SELECT First(ID) FROM MSysObjects) As Dummy" & _
" WHERE NOT EXISTS(SELECT 1 FROM dvd WHERE Name = p1)"
.Parameters("p1") = txtteNow.value
.Parameters("p2") = txtName.value
.Parameters("p3") = txtPhone.value
.Execute
End With