记录三个ASP问题
提示:本文更新于 5807 天前,技术内容可能已发生变化,仅供参考。
最近我遇到了三个ASP开发问题,在这里记录下来。
一、provider 80004005错误
(一)问题描述
ASP网站遭遇了“provider 80004005”错误,错误提示指向“conn.asp”文件的第3行。
set conn=server.createobject("ADODB.connection")
Strconn="DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("data#Holmesian33894869abc.mdb")
conn.Open Strconn
set rs=server.CreateObject("ADODB.Recordset")
set rs1=server.CreateObject("ADODB.Recordset")
set rs2=server.CreateObject("ADODB.Recordset")
set rs3=server.CreateObject("ADODB.Recordset")
set rs4=server.CreateObject("ADODB.Recordset")
set rs5=server.CreateObject("ADODB.Recordset")
set rs6=server.CreateObject("ADODB.Recordset")
set rsconna=server.CreateObject("ADODB.Recordset")
Response.Buffer = True
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
经排查,问题出在数据库连接字符串部分。
Strconn="DRIVER={Microsoft Access Driver*.mdb)};DBQ="&Server.MapPath("data#Holmesian33894869abc.mdb")
这种数据库连接方法采用的是较老的驱动连接方式。
(二)解决方法
将数据库连接字符串中的驱动部分“DRIVER={Microsoft Access Driver (*.mdb)}”修改为“Provider=Microsoft.Jet.OLEDB.4.0” ,修改后的连接字符串如下:
Strconn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("data#Holmesian33894869abc.mdb")
采用这种方式修改后,该错误基本得到解决。但需注意的是,部分原有的SQL语句可能会因连接方式的改变而出现问题,后续需要逐个进行检查和修改。
二、OLE DB错误
(一)问题描述
在操作过程中,出现了“多步OLE DB操作产生错误”的情况。经分析,原因是提交的表单项目中含有回车的内容。涉及到的代码如下:
rs("原因1")=reason1
rs("原因2")=reason2
(二)解决方法
将上述代码修改为:
rs("原因1").value=reason1
rs("原因2").value=reason2
通过这种修改,问题得以解决。不过,回车之后的内容不会被保留。并且需要注意的是,这个问题的出现具有一定的间歇性,所以不能保证所有出现OLE问题的情况都能通过此方法解决。
三、多行文本换行问题
(一)问题描述
在页面表单中,当含有<textarea>
控件的内容提交到数据库后,若提交的多行文本中包含回车,就无法再将其完整地调回显示到<textarea>
控件中。这主要是因为通过js的方式无法实现对回车的正确显示,至少在动态更新时存在问题。
(二)解决方法
在接受表单数据时,对回车进行转义处理。具体代码如下:
reason1=replace(reason1,chr(13),"")
reason1=replace(reason1,chr(10),"")
reason1=replace(reason1,chr(32),"")
经过这样的处理,当使用Js调用数据库里相应的字段时,就不会出现因回车导致的显示问题。另外,通常情况下,对于一些特殊符号也需要进行转义,例如:
temp=replace(temp,"<","<")
temp=replace(temp,">",">")
「倘若有所帮助,不妨酌情赞赏!」
感谢您的支持!
使用微信扫描二维码赞赏