记录三个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,"<","&lt;")
temp=replace(temp,">","&gt;")

「倘若有所帮助,不妨酌情赞赏!」

Holmesian

感谢您的支持!

使用微信扫描二维码赞赏


相关文章

发表新评论