ASP初学者常犯的几个错误(ZT)
2023-06-13 09:13:52 时间
1.记录集关闭之前再次打开:
------------------------------------
sql="select*fromtest"
rs.opensql,conn,1,1
ifnotrs.eofthen
dimmyName
myName=rs("name")
endif
sql="select*frommyBook"
rs.opensql,conn,1,1
-------------------------------------
解决:在第二次rs.open之前先关闭rs.close
或
setrs1=server.createobject
rs1.opensql,conn,1,1
2,用SQL关键字做表名或字段名
-------------------------------------
sql="select*fromuser"
rs.opensql,conn,1,1
-------------------------------------
user为sql关键字
解决:改为
sql="select*from[user]"
3,用锁定方式去进行update
-------------------------------------
sql="select*from[user]"
rs.opensql,conn,1,1
rs.addnew
或
rs("userName")="aa"
rs.update
-------------------------------------
当前记录集的打开方式为只读
解决:
改为
rs.opensql,conn,1,3
4,在查询语句中采用的对比字段值与字段类型不符
-----------------------------------------
sql="select*from[user]whereid=""&myID&"""
rs.opensql,conn,1,1
-----------------------------------------
假设表中设计ID为数字型,那么些时出错。
解决:
sql="select*from[user]whereid="&myID
5,未检查变量值而出错
-----------------------------------------
sql="select*from[user]whereid="&myID
rs.opensql,conn,1,1
-----------------------------------------
假设myID变量此时值为null,那么sql将成为
sql="select*from[user]whereid="
解决:
在前面加上
ifisnull(myID)then出错提示
6,未检查变量值类型而出错
-----------------------------------------
sql="select*from[user]whereid="&myID
rs.opensql,conn,1,1
-----------------------------------------
假设id为数字型,myID变量此时值不为null,但为字符,比如myID此时为"aa"
那么sql将成为
sql="select*from[user]whereid=aa"
解决:
在前面加上
ifisnumeric(myID)=falsethen出错提示
这也可以有效防止sqlinjection漏洞攻击。
7,由于数据库文件所在目录的NTFS权限而引起的"不能更新。数据库或对象为只读"错误。
说明:
WIN2K系统延续了WINNT系统的NTFS权限。
对于系统中的文夹都有默认的安全设置。
而通过HTTP对WWW访问时的系统默认用户是iusr_计算机名用户,它属于guest组。
当通过HTTP访问时,可以ASP或JSP,也或是PHP或.NET程序对数据进行修改操作:
比如:
当打开某一个文章时,程序设定,文章的阅读次数=原阅读次数+1
执行
conn.execute("updateartssetclicks=clicks+1whereid=n")
语句时,如果iusr_计算机名用户没有对数据库的写权限时,就会出错.
解决方法:
找到数据库所在目录
右键》属性》安全选项卡》设置iusr_计算机名用户的写权限(当然,也可以是everyone)
------------------------------------
sql="select*fromtest"
rs.opensql,conn,1,1
ifnotrs.eofthen
dimmyName
myName=rs("name")
endif
sql="select*frommyBook"
rs.opensql,conn,1,1
-------------------------------------
解决:在第二次rs.open之前先关闭rs.close
或
setrs1=server.createobject
rs1.opensql,conn,1,1
2,用SQL关键字做表名或字段名
-------------------------------------
sql="select*fromuser"
rs.opensql,conn,1,1
-------------------------------------
user为sql关键字
解决:改为
sql="select*from[user]"
3,用锁定方式去进行update
-------------------------------------
sql="select*from[user]"
rs.opensql,conn,1,1
rs.addnew
或
rs("userName")="aa"
rs.update
-------------------------------------
当前记录集的打开方式为只读
解决:
改为
rs.opensql,conn,1,3
4,在查询语句中采用的对比字段值与字段类型不符
-----------------------------------------
sql="select*from[user]whereid=""&myID&"""
rs.opensql,conn,1,1
-----------------------------------------
假设表中设计ID为数字型,那么些时出错。
解决:
sql="select*from[user]whereid="&myID
5,未检查变量值而出错
-----------------------------------------
sql="select*from[user]whereid="&myID
rs.opensql,conn,1,1
-----------------------------------------
假设myID变量此时值为null,那么sql将成为
sql="select*from[user]whereid="
解决:
在前面加上
ifisnull(myID)then出错提示
6,未检查变量值类型而出错
-----------------------------------------
sql="select*from[user]whereid="&myID
rs.opensql,conn,1,1
-----------------------------------------
假设id为数字型,myID变量此时值不为null,但为字符,比如myID此时为"aa"
那么sql将成为
sql="select*from[user]whereid=aa"
解决:
在前面加上
ifisnumeric(myID)=falsethen出错提示
这也可以有效防止sqlinjection漏洞攻击。
7,由于数据库文件所在目录的NTFS权限而引起的"不能更新。数据库或对象为只读"错误。
说明:
WIN2K系统延续了WINNT系统的NTFS权限。
对于系统中的文夹都有默认的安全设置。
而通过HTTP对WWW访问时的系统默认用户是iusr_计算机名用户,它属于guest组。
当通过HTTP访问时,可以ASP或JSP,也或是PHP或.NET程序对数据进行修改操作:
比如:
当打开某一个文章时,程序设定,文章的阅读次数=原阅读次数+1
执行
conn.execute("updateartssetclicks=clicks+1whereid=n")
语句时,如果iusr_计算机名用户没有对数据库的写权限时,就会出错.
解决方法:
找到数据库所在目录
右键》属性》安全选项卡》设置iusr_计算机名用户的写权限(当然,也可以是everyone)
相关文章
- 关于【ExecuteReader: Connection 属性尚未初始化】的错误提示解决方案「建议收藏」
- http请求415错误Unsupported Media Type
- 【错误记录】PyCharm 运行 Python 程序报错 ( SyntaxError: Non-ASCII character ‘xe5‘ in file x.py on line 1, but )
- 【错误记录】Android Studio 编译报错 ( Module was compiled with an incompatible version of Kotlin. The binary )
- python-异常处理和错误调试-协程中的异常处理(二)
- SQLServer 错误 2533 表错误:看不到分配给对象 ID O_ID、索引 ID I_ID、分区 ID PN_ID、分配单元 ID A_ID(类型为 TYPE)的页 P_ID。 该页可能无效,或者页头中可能包含错误的分配单元 ID。 故障 处理 修复 支持远程
- SQLServer 错误 2537 表错误:对象 ID O_ID,索引 ID I_ID,分区 ID PN_ID,分配单元 ID A_ID(类型为 TYPE),页 P_ID,行 ROW_ID。 记录检查(CHECK_TEXT)失败。 值为 VALUE1 和 VALUE2。 故障 处理 修复 支持远程
- SQLServer 错误 3417 无法恢复 master 数据库。 SQL Server 无法运行。 请利用完整备份还原 master 数据库,修复它,或者重新生成它。 有关如何重新生成 master 数据库的详细信息,请参阅 SQL Server 联机丛书。 故障 处理 修复 支持远程
- MongoDB错误日志:处理常见问题(mongodb错误日志)
- macOS Big Sur 11.5 发布 播客功能升级及错误修复
- 使用 ASP 连接 MS SQL 服务器(asp连接mssql)
- 误记录SQL Server中快速删除错误记录(sqlserver删除错)
- 解决mssql数据库错误1060(mssql错误1060)
- 教你如何用ASP连接MySQL(asp连接mysql教程)
- 在MySQL5中使用ASP搭建数据库连接(asp连接mysql5)
- 用ASP编写MySQL数据库程序简单又高效(asp使用mysql代码)
- ASP操作Oracle 轻松实现查询驱动结果(asp查询oracle)
- ASP程序使用Oracle数据库实现智能化管理(asp 操作oracle)
- ASP程序开发与Oracle数据库结合实现(asp与oracle)
- 组织成有序的错误Oracle ERR00907正确组织管理有序性(oracle中00907)
- asp.net错误页面处理示例分享
- nginx504GatewayTime-out错误解决方法
- ASP提示错误'8002801d'的解决办法