1.记录集关闭之前再 次打开:
---------- ---------- ---------- ------
sql="selec t * from test"
rs.open sql,conn,1 ,1
if not rs.eof then
dim myName
myName=rs( "name")
end if
sql="selec t * from myBook"
rs.open sql,conn,1 ,1
---------- ---------- ---------- -------
解决:在第二次rs.op en之前先关闭 rs.close
或
set rs1=server .createobj ect
rs1.open sql,conn,1 ,1
2,用SQL关键字做表名或字段名
---------- ---------- ---------- -------
sql="selec t * from user"
rs.open sql,conn,1 ,1
---------- ---------- ---------- -------
user为sql关键 字
解决:改为
sql="selec t * from [user]"
3,用锁定方式去进行 update
---------- ---------- ---------- -------
sql="selec t * from [user]"
rs.open sql,conn,1 ,1
rs.addnew
或
rs("userNa me")="aa"
rs.update
---------- ---------- ---------- -------
当前记录集的打开方式 为只读
解决:
改为
rs.open sql,conn,1 ,3
4,在查询语句中采用 的对比字段值与字段类 型不符
---------- ---------- ---------- ---------- -
sql="selec t * from [user] where id='" & myID & "'"
rs.open sql,conn,1 ,1
---------- ---------- ---------- ---------- -
假设表中设计ID为数 字型,那么些时出错。
解决:
sql="selec t * from [user] where id=" & myID
5,未检查变量值而出 错
---------- ---------- ---------- ---------- -
sql="selec t * from [user] where id=" & myID
rs.open sql,conn,1 ,1
---------- ---------- ---------- ---------- -
假设myID变量此时 值为null,那么s ql将成为
sql="selec t * from [user] where id="
解决:
在前面加上
if isnull(myI D) then 出错提示
6,未检查变量值类型 而出错
---------- ---------- ---------- ---------- -
sql="selec t * from [user] where id=" & myID
rs.open sql,conn,1 ,1
---------- ---------- ---------- ---------- -
假设id为数字型,m yID变量此时值不为 null,但为字符, 比如myID此时为" aa"
那么sql将成为
sql="selec t * from [user] where id=aa"
解决:
在前面加上
if isnumeric( myID)=fals e then 出错提示
这也可以有效防止 sql injection 漏洞攻击。
7,由于数据库文件所在目录的NTF S权限而引起的'不能 更新。数据库或对象为 只读"错误。
说明:
WIN2K系统延续了 WINNT系统的NT FS权限。
对于系统中的文夹都有 默认的安全设置。
而通过HTTP对WW W访问时的系统默认用户是 iusr_计算机名 用户 ,它属于guest组 。
当通过HTTP访问时 ,可以ASP或JSP,也或是PH P或.NET程序对数 据进行修改操作:
比如:
当打开某一个文章时, 程序设定,文章的阅读 次数=原阅读次数+1
执行
conn.execute("upda te arts set clicks=cli cks+1 where id=n")
语句时,如果 iusr_计算机名 用户没有对数据库的写 权限时,就会出错.
解决方法:
找到数据库所在目录
右键》属性》安全选项 卡》设置 iusr_计算机名 用户的写权限(当然, 也可以是everyo ne)
----------
sql="selec
rs.open sql,conn,1
if not rs.eof then
dim myName
myName=rs(
end if
sql="selec
rs.open sql,conn,1
----------
解决:在第二次rs.op
或
set rs1=server
rs1.open sql,conn,1
2,用SQL关键字做表名或字段名
----------
sql="selec
rs.open sql,conn,1
----------
user为sql关键
解决:改为
sql="selec
3,用锁定方式去进行
----------
sql="selec
rs.open sql,conn,1
rs.addnew
或
rs("userNa
rs.update
----------
当前记录集的打开方式
解决:
改为
rs.open sql,conn,1
4,在查询语句中采用
----------
sql="selec
rs.open sql,conn,1
----------
假设表中设计ID为数
解决:
sql="selec
5,未检查变量值而出
----------
sql="selec
rs.open sql,conn,1
----------
假设myID变量此时
sql="selec
解决:
在前面加上
if isnull(myI
6,未检查变量值类型
----------
sql="selec
rs.open sql,conn,1
----------
假设id为数字型,m
那么sql将成为
sql="selec
解决:
在前面加上
if isnumeric(
这也可以有效防止 sql injection 漏洞攻击。
7,由于数据库文件所在目录的NTF
说明:
WIN2K系统延续了
对于系统中的文夹都有
而通过HTTP对WW
当通过HTTP访问时
比如:
当打开某一个文章时,
执行
conn.execute("upda
语句时,如果 iusr_计算机名 用户没有对数据库的写
解决方法:
找到数据库所在目录
右键》属性》安全选项


