[Microsoft][ODBC Microsoft Access 驱动程序] 磁盘或网络错误。

斗斗哟 2011-11-14 07:06:32
学习ASP,用的WIN7系统。与数据库连接总是上面的问题,代码应该没问题。数据库和代码在一个文件夹,代码如下:
<center><h4>数据表“表1”中的第一条记录</h4></center>
<hr>
<%
set conn=server.createobject("ADODB.Connection")
' connstr="DBQ="+server.mappath("db.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
' set conn=server.createobject("ADODB.CONNECTION")
' conn.open connstr
conn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&server.MapPath("db.mdb")
set rs=server.createobject("ADODB.Recordset")
sql="select*from 表1"
re.open sql,conn,1,1
response.write rs.fields("C-Id")&"<br>"
response.write rs.fields("C-Name")&"<br>"
response.write rs.fields("C-Address")&"<br>"
response.write rs.fields("C-Tel")&"<br>"
response.write rs.fields("C-Mail")&"<br>"
%>
...全文
1772 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zb1999 2011-11-15
  • 打赏
  • 举报
回复
又忘記改了

sql="select * from 表1"
rs.open sql,conn,1,1
response.write rs("C-Id")&"<br>"
response.write rs("C-Name")&"<br>"
response.write rs("C-Address")&"<br>"
response.write rs("C-Tel")&"<br>"
response.write rs("C-Mail")&"<br>"
zb1999 2011-11-15
  • 打赏
  • 举报
回复
忘記改你的rs
sql="select*from 表1"
rs.open sql,conn,1,1
response.write rs.fields("C-Id")&"<br>"
response.write rs.fields("C-Name")&"<br>"
response.write rs.fields("C-Address")&"<br>"
response.write rs.fields("C-Tel")&"<br>"
response.write rs.fields("C-Mail")&"<br>"
zb1999 2011-11-15
  • 打赏
  • 举报
回复
sql="select * from 表1"
re.open sql,conn,1,1
response.write rs("C-Id")&"<br>"
response.write rs("C-Name")&"<br>"
response.write rs("C-Address")&"<br>"
response.write rs("C-Tel")&"<br>"
response.write rs("C-Mail")&"<br>"
斗斗哟 2011-11-14
  • 打赏
  • 举报
回复
啊啊啊啊啊啊崩溃啦
斗斗哟 2011-11-14
  • 打赏
  • 举报
回复
来人啊。求解决问题= =!!!~~~~(>_<)~~~~
斗斗哟 2011-11-14
  • 打赏
  • 举报
回复
就是这行
conn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&server.MapPath("db.mdb")
街头小贩 2011-11-14
  • 打赏
  • 举报
回复
Connection.asp,行 8是什么?写ASP最好用SERVER版的OS
斗斗哟 2011-11-14
  • 打赏
  • 举报
回复
Access开发的网络应用程序经常会遇到“磁盘或网络错误”而断开连接,造成数据丢失或者数据库损坏,开始都会怀疑是网络状况不好造成,经查看微软的故障原因解释,才发现真正的原因是在环境变量指定的临时文件夹,一般默认情况Temp文件夹是不允许所有用户具备写操作的,而局域网用户访问Access程序又必须读写这个文件夹,因此必须修改其权限设置,



方法如下: 将服务器上c:\Windows目录下的Temp文件夹权限设置为Everyone 具备读写权限即可,无需重新启动




[Microsoft][ODBC Microsoft Access Driver] 磁盘或网络错误


asp [Microsoft][ODBC Microsoft Access Driver] 磁盘或网络错误。


解决方案:


给“系统盘:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp”目录添加一个“AuthenticatedUsers”的用户





试图连接到 Access.mdb 文件,ODBC 的错误信息返回说明"磁盘或网络错误"。在 Microsoft OLE DB 提供程序的 Microsoft Jet 数据库引擎也可能会返回一个"未指定的错误 (错误代码 = 0x80004005) 消息。

仅当打开数据源时,在 Microsoft Internet 信息服务器 (IIS) 或 Microsoft Windows NT 服务下,但不是在已登录的用户帐户下时,可能会发生该问题。
回到顶端


原因


在引擎启动时,jet 会创建一个临时文件。在这样做它首先检查 TMP 环境变量,使用该路径定义创建临时文件的位置。 如果它不会看到 TMP 环境变量,它查找 TEMP 环境变量。 如果未定义温度,则它然后使用该 Windows 文件夹 (\WINDOWS 或 \WINNT)。

如果 TMP/TEMP 定义但指向不存在的文件夹,则会出现此错误。

此外时打开 Access 数据库通过 IIS 或一个 Windows NT 服务, 和本地系统帐户下运行 IIS 或服务时,TMP 或 TEMP 系统环境变量使用。 当 Web 服务或 Windows NT 使用用户帐户启动服务,则使用 TMP/TEMP 用户配置文件环境变量。
回到顶端


解决方案


定义 TMP 或 TEMP 环境变量,并将该变量分配给现有的文件夹。如果您从 IIS 访问 Access 数据库,一定要检查是在系统环境设置,而不是登录的用户的环境变量。此外确保 IUSER 匿名 IIS 帐户到临时文件夹具有访问权限。

更改任何环境变量后,您必须重新启动计算机。
在 Windows NT 4.0 下可通过转到控制面板并单击 系统,然后选择 环境 选项卡来设置环境变量。

斗斗哟 2011-11-14
  • 打赏
  • 举报
回复
Question 4:“未指定提供程序,也没有指派的默认提供程序。”

Answer 4:这就是一个典型的64位系统问题,由于64位操作系统不支持Microsoft OLE DB Provider for Jet驱动程序,也不支持更早的Microsoft Access Driver (*.mdb)方式连接。这一点在Microsoft的网站上得到了证实。用于 Access 和 Excel 数据库的 Microsoft OLE DB Provider for Jet 在 64 位版本中不可用,也就是说,如下两种连接字符串都已经无法正常工作了:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.mappath(db)

"driver=Microsoft Access Driver (*.mdb);DBQ="&Server.MapPath(db)

既然这样,就只能使用一个办法,将IIS的运行环境设置为32位:“服务器/应用程序池/DefaultAppPool/设置应用程序池默认设置/(常规)/启用32位应用程序/True”。

另外一点,SQL数据库链接是可以在64位机上运行的,链接字符串为:"PROVIDER=SQLOLEDB;DATA SOURCE="&SqlLocalName&";UID="&SqlUsername&";PWD="&SqlPassword&";DATABASE="&SqlDatabaseName

-

Question 5:“磁盘或网络错误”、“未指定的错误” 、“Microsoft JET Database Engine 错误 '80004005' 未指定的错误”、“Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' [Microsoft][ODBC Microsoft Access 驱动程序] 磁盘或网络错误”。

Answer 5:产生这样的错误是由于IIS没有读取IE缓存的权限而引起的。(错误取决于你使用哪种方式连接Access数据库)只需设置缓存目录的权限即可,打开文件夹:(注意,AppData 文件夹是隐藏文件夹)

“C:\Windows\ServiceProfiles\NetworkService\AppData\Local\”,在Temp上点击右键,依次点击“属性”、“安全”、“编辑”、“添加”,然后输入“Authenticated Users”并点击确定。然后在Authenticated Users的权限里面,设置“完全控制”和“修改”的权限。

-

Question 6:Q4、Q5都已经解决,但是仍然提示错误。

Question 6:重新安装或注册机器的Access驱动,msadds.dll(OLE DB Data Shape)。在运行命令里面输入:(64位“REGSVR32 "C:\Program Files (x86)\Common Files\System\Ole DB\MSDASQL.DLL"”);(32位“REGSVR32 "C:\Program Files\Common Files\System\ole db\MSDASQL.DLL"”)

-

Question 7:还是没有办法解决1-6的问题。

Answer 7:很抱歉,对于这方面的问题,Elvas告诉你国内应该没有人可以帮助你了。(-_-)
斗斗哟 2011-11-14
  • 打赏
  • 举报
回复
不是的。我找的教材上的例子用来测试的。老师也说代码没问题,网上一部分人认为是权限问题,一部分人认为是数据库问题,关于数据库问题,我已经重新装过驱动等等,关于权限问题,配置IIS时候有个无法验证对。。。的授权来着,但是我不会改,哎,有人说是制定给某某用户,我也试过,不好使百度谷歌查了三天了,~~~~(>_<)~~~~
街头小贩 2011-11-14
  • 打赏
  • 举报
回复

If NOT rs.EOF then
do while NOT rs.EOF
response.write rs.fields("C-Id")&"<br>"
response.write rs.fields("C-Name")&"<br>"
response.write rs.fields("C-Address")&"<br>"
response.write rs.fields("C-Tel")&"<br>"
response.write rs.fields("C-Mail")&"<br>"
rs.MoveNext
Loop
End If
街头小贩 2011-11-14
  • 打赏
  • 举报
回复
哪是你没有循环呀!
斗斗哟 2011-11-14
  • 打赏
  • 举报
回复
恩恩,已经改正,多谢,但是错误还是那个:
数据表“表1”中的第一条记录

--------------------------------------------------------------------------------

Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'

[Microsoft][ODBC Microsoft Access 驱动程序] 磁盘或网络错误。

/Connection.asp,行 8
斗斗哟 2011-11-14
  • 打赏
  • 举报
回复
恩恩。但是错误还是一样的。
街头小贩 2011-11-14
  • 打赏
  • 举报
回复
re.open sql,conn,1,1
这行错了.是rs.open sql,conn,1,1
街头小贩 2011-11-14
  • 打赏
  • 举报
回复
re.open sql,conn,1,1

是rs!不是re

28,408

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧