从经典 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 数据库

使用 ODBC 从 Web 服务器连接到 MS Access 数据库时找不到数据源名称

经典 ASP 和 ms-access:插入数据的问题

从经典 ASP 应用程序连接到 SQLExpress