ASP初学者常犯的几个错误
<strong>1.记录集关闭之前再次打开:<br /></strong>------------------------------------<br />sql="select * from test"<br />rs.open sql,conn,1,1<br />if not rs.eof then<br />dim myName<br />myName=rs("name")<br />end if<br />sql="select * from myBook"<br />rs.open sql,conn,1,1<br />-------------------------------------<br />解决:在第二次rs.open之前先关闭 rs.close<br />或<br />set rs1=server.createobject<br />rs1.open sql,conn,1,1<br /><br /><strong>2,用SQL关键字做表名或字段名<br /></strong>-------------------------------------<br />sql="select * from user"<br />rs.open sql,conn,1,1<br />-------------------------------------<br />user为sql关键字<br />解决:改为<br />sql="select * from "<br /><br /><br /><strong>3,用锁定方式去进行update<br /></strong>-------------------------------------<br />sql="select * from "<br />rs.open sql,conn,1,1<br />rs.addnew<br />或<br />rs("userName")="aa"<br />rs.update<br />-------------------------------------<br />当前记录集的打开方式为只读<br />解决:<br />改为<br />rs.open sql,conn,1,3<br /><br /><strong>4,在查询语句中采用的对比字段值与字段类型不符<br /></strong>-----------------------------------------<br />sql="select * from where id= " & myID & " "<br />rs.open sql,conn,1,1<br />-----------------------------------------<br />假设表中设计ID为数字型,那么些时出错。<br />解决:<br />sql="select * from where id=" & myID<br /><br /><strong>5,未检查变量值而出错</strong><br />-----------------------------------------<br />sql="select * from where id=" & myID<br />rs.open sql,conn,1,1<br />-----------------------------------------<br />假设myID变量此时值为null,那么sql将成为<br />sql="select * from where id="<br />解决:<br />在前面加上<br />if isnull(myID) then 出错提示<br /><br /><strong>6,未检查变量值类型而出错<br /></strong>-----------------------------------------<br />sql="select * from where id=" & myID<br />rs.open sql,conn,1,1<br />-----------------------------------------<br />假设id为数字型,myID变量此时值不为null,但为字符,比如myID此时为"aa"<br />那么sql将成为<br />sql="select * from where id=aa"<br />解决:<br />在前面加上<br />if isnumeric(myID)=false then 出错提示<br /><br />这也可以有效防止 sql injection 漏洞攻击。<br /><br /><strong>7,由于数据库文件所在目录的NTFS权限而引起的 不能更新。数据库或对象为只读"错误。<br /></strong>说明:<br />WIN2K系统延续了WINNT系统的NTFS权限。<br />对于系统中的文夹都有默认的安全设置。<br />而通过HTTP对WWW访问时的系统默认用户是 iusr_计算机名 用户 ,它属于guest组。<br />当通过HTTP访问时,可以ASP或JSP,也或是PHP或.NET程序对数据进行修改操作:<br />比如:<br />当打开某一个文章时,程序设定,文章的阅读次数=原阅读次数+1<br />执行<br />conn.execute("update arts set clicks=clicks+1 where id=n")<br />语句时,如果 iusr_计算机名 用户没有对数据库的写权限时,就会出错.<br />解决方法:<br />找到数据库所在目录右键》属性》安全选项卡》设置 iusr_计算机名 用户的写权限(当然,也可以是everyone)<br /><img src="http://host1.rdzjw.com/2007UpFile/2007-8/2007817102748.gif" border=0 />
页:
[1]