高分: ASP中判断数据库中是否存在要插入的数据的问题
我需要向数据库中插入一个新纪录,插入前先判断是否已经存在该数据,以下是判断部分,但得不得想要的效果,明明数据库中已存在相同的数据,但是flg的值还是0,请大虾们指出错误之...
我需要向数据库中插入一个新纪录,插入前先判断是否已经存在该数据,以下是判断部分,但得不得想要的效果,明明数据库中已存在相同的数据,但是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 去掉, 即数据库中根本就没有新纪录被插入. 展开
问题部分如下:
'判断是否已经存在该文件
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
如果是原名上传的修改下以下代码看看
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
展开全部
'判断是否已经存在该文件
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
If Not rs.EOF Or Not rs.BOF then
flg=1
end if
结构混乱
改成
If Not rs.EOF then
flg=1
end if
就可以了
flg=1
end if
结构混乱
改成
If Not rs.EOF then
flg=1
end if
就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
测试下这个
if rs.eof and rs.bof then
flg=0
else
flg=1
end if
if rs.eof and rs.bof then
flg=0
else
flg=1
end if
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
rs.open sql,conn,1,1 游标1,1不能更新 必须1,3才能更新
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-12-08
展开全部
rs.update 去掉,没更新更新什么?再说你的游标是只读格式。你出现这个就导致这函数出错,在rs.update的时候停止了运行。而你之前一定有on error resume next 把函数错误给屏蔽了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询