高分: ASP中判断数据库中是否存在要插入的数据的问题

我需要向数据库中插入一个新纪录,插入前先判断是否已经存在该数据,以下是判断部分,但得不得想要的效果,明明数据库中已存在相同的数据,但是flg的值还是0,请大虾们指出错误之处,谢谢!

问题部分如下:
'判断是否已经存在该文件
set rs=server.CreateObject("adodb.recordset") '建立一个记录集对象rs
sql="select * from PRODUCTS WHERE IMG='" & Pic_Name & "'"
rs.open sql,conn,1,1 '打开记录集
If Not rs.EOF Or Not rs.BOF then
flg=1
end if
rs.update
rs.close
set rs=nothing
conn.close
set conn=nothing

整个函数如下:
formpath="photo/" '设置上传的文件夹名
url="allproduct.asp" '上传完后,返回到的页面。
set upload=new upload_5xsoft '实例化一个上传对象upload,这个无组件上传类最大只能上200K的文件,上传超过200K文件,将会非常的慢,如果想上传更大的文件,可以使用有组件上传
dim flg
flg=0

function up_pic() '这是一个上传函数
iCount=0'记录上传图片数
for each formName in upload.objFile '列出所有上传了的文件
set file=upload.file(formName) '生成一个文件对象
intFileSize=file.FileSize
if file.FileSize>0 and file.filesize<=262144 then '如果 FileSize > 0 说明有文件数据

FileNameext = LCase(Right(file.fileName,4)) '最文件名的后四位字符,并转成小写
if FileNameext=".jpg" or FileNameext=".gif" or FileNameext=".GIF" or FileNameext=".JPG"then '判断图片的格式,你也可以去掉不判断
Pic_Name=file.fileName '将文件名赋值给变量Pic_Name

'判断是否已经存在该文件
set rs=server.CreateObject("adodb.recordset") '建立一个记录集对象rs
sql="select * from PRODUCTS WHERE IMG='" & Pic_Name & "'"
rs.open sql,conn,1,1 '打开记录集
If Not rs.EOF Or Not rs.BOF then
flg=1
end if
rs.update
rs.close
set rs=nothing
conn.close
set conn=nothing

if flg=1 then '如果已经存在同名文件
response.write "<script language=javascript>"
response.write "alert('系统已存在此图片,请重新上传其它产品图片!');"
response.write" history.go(-1);"
response.write "</script>"
response.end
exit function
end if

file.SaveAs Server.mappath(formPath & file.FileName) ''保存文件
iCount=iCount+1
else
response.write "<script language=javascript>"
response.write "alert('你上传的图片格式不正确');"
response.write" history.go(-1);"
response.write "</script>"
response.end
end if

else if file.filesize>262144 then '如果文件大于256K,这个数值你可以自己算256×1024
response.write "<script language=javascript>"
response.write "alert('上传的图片大于256K,上传失败!');"
response.write" history.go(-1);"
response.write "</script>"
response.end
end if
end if
set file=nothing
next
up_pic=Pic_Name '本函数的作用是,将上传的图片上传到文件夹中,并将文件名返回
end function

picname=up_pic() '调用up_pic()函数,返回文件名
谢谢解答, 我把rs.open sql,conn,1,1 改成rs.open sql,conn,1,3后,的确能提示"系统已存在此图片,请重新上传其它产品图片!", 不过却没有上传到文件, 新纪录中其它字段都有数据,但IMG字段没有数据. 紧跟在上面这段程序的后面是:
if fla=0 then '无相同数据
set rs=server.CreateObject("adodb.recordset") '建立一个记录集对象rs
sql="select * from PRODUCTS"
rs.open sql,conn,1,3 '打开记录集参数1,3表示可以修改方式打开
rs.addnew

rs("ITEM")=trim(upload.form("item")) '这里要注意,必须用upload.form来获取表单的值,和平常不一样,不能用request.form
rs("SERIEID")=upload.form("series")
rs("SIZE")=trim(upload.form("size"))
rs("SALEKIND")=upload.form("salekind")
rs("IMG")=picname
rs("TIME")=now()

rs.update
rs.close '使用完后关闭记录集
set rs=nothing
conn.close '关闭数据库连接对象
set conn=nothing
end if

如果把之前的那个rs.update 去掉, 即数据库中根本就没有新纪录被插入.

你的文件是原名商船的吗? 一般的上传组件会自动给上传文件换个和日期相关的新文件名的,所以你每次上传的文件名都不会一样,就出现你的问题了.

如果是原名上传的修改下以下代码看看

sql="select * from PRODUCTS WHERE IMG='" & Pic_Name & "'"
rs.open sql,conn,1,3 '打开记录集
If Not rs.EOF Or Not rs.BOF then
flg=1
Else
Rs.AddNew
Rs("IMG")=Pic_Name '如果没有该文件则添加
End If
rs.update
rs.close
set rs=nothing
conn.close
set conn=nothing
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-12-08
'判断是否已经存在该文件
set rs=server.CreateObject("adodb.recordset") '建立一个记录集对象rs
sql="select 1 from PRODUCTS WHERE IMG='" & Pic_Name & "'"
rs.open sql,conn,1,1 '打开记录集
if rs.RecordCount>0 then flg=1 else flg=0
rs.close
set rs=nothing
conn.close
set conn=nothing
第2个回答  2009-12-08
If Not rs.EOF Or Not rs.BOF then
flg=1
end if
结构混乱
改成
If Not rs.EOF then
flg=1
end if
就可以了
第3个回答  2009-12-08
测试下这个
if rs.eof and rs.bof then
flg=0
else
flg=1
end if
第4个回答  2009-12-08
rs.open sql,conn,1,1 游标1,1不能更新 必须1,3才能更新
第5个回答  2009-12-08
rs.update 去掉,没更新更新什么?再说你的游标是只读格式。你出现这个就导致这函数出错,在rs.update的时候停止了运行。而你之前一定有on error resume next 把函数错误给屏蔽了。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网