从经典 ASP 连接到 MS Access 数据库
Posted
技术标签:
【中文标题】从经典 ASP 连接到 MS Access 数据库【英文标题】:Connect to MS Access database from classic ASP 【发布时间】:2011-12-28 13:42:50 【问题描述】:我正在尝试从经典 ASP 脚本连接 MS Access 数据库。
我使用的是运行 IIS7 的 64 位 Windows 7 操作系统
我有以下代码:
Dim Connection
Set Connection = Server.CreateObject("ADODB.Connection")
Response.Write("object created...")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("D://Somnath//ExtraLogistics//Source//ZipDB.mdb") & ";"
Response.Write("connected...")
但我在 IIS 上运行应用程序时在浏览器中收到此错误 The website cannot display the page
。
请帮助我从我的 IIS 连接到 Access 数据库。
【问题讨论】:
你检查服务器日志了吗? 你的访问路径是否有权限被你的 IIS 服务访问? 如果您删除连接,response.writes 是否有效? 【参考方案1】:您的 MapPath 看起来不正确。
看看这个ASP reference。
编辑:
Server.MapPath 指向虚拟引用的物理位置:
例如: '根目录的物理路径 Response.Write Server.MapPath("/")
'DataDirectory的物理路径 Response.Write Server.MapPath("/DataDirectory/")
将 ZipDB.mdb 放在您网站的根目录中并更改 Server.MapPath("/")
【讨论】:
我已经在 ISS 中为源文件夹创建了虚拟目录,并且数据库文件,即 ZipDB.mdb 也放置在同一文件夹中,但仍然无法正常工作...【参考方案2】:使用“文件 dsn”:
conn.open "driver=Microsoft Access Driver (*.mdb);dbq=c:\filepath\yourdb.mdb;"
【讨论】:
【参考方案3】:Server.MapPath 将 URL 路径转换为服务器上的物理路径,因此 Server.MapPath("D://Somnath//ExtraLogistics//Source//ZipDB.mdb") 几乎肯定是错误的。
如果 mdb 文件位于 http://yourhost/Somnath/ExtraLogistics/Source/ZibDB.mdb,那么您将使用 Server.MapPath("/Somnath/ExtraLogistics/Source/ZibDB.mdb")
,Server.MapPath 将为您提供 mdb 文件在服务器文件系统中的位置。
如果文件位于 D:\Somnath\ExtraLogistics\Source\ZipDB.mdb 则只需使用该文件路径并完全删除 Server.MapPath。
像这样:
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Somnath\ExtraLogistics\Source\ZipDB.mdb;"
【讨论】:
【参考方案4】:请注意,您希望将数据库存储在相对于您执行 asp 文件的位置的父目录中。如果您不这样做,则可以通过浏览器中的 url 访问数据库。
另请注意,要使其正常工作,必须在 IIS 中启用“允许父路径”。
【讨论】:
以上是关于从经典 ASP 连接到 MS Access 数据库的主要内容,如果未能解决你的问题,请参考以下文章
将 asp.net web 表单连接到 ms access 数据库
连接到 MS Access 的 Mono 和 ASP.NET Web 应用程序
如何将 .NET Core ASP 应用程序连接到 MS Access 数据库