none
使用ado打开数据库 RRS feed

  • 问题

  • <html>
        <body>
        <%
        set conn=Server.CreateObject("ADODB.Connection")
        conn.Provider="Microsoft.Jet.OLEDB.4.0"
        conn.Open "C:\Users\CarbonSoft\Desktop\demo.mdb"
        conn.close
        %>
        </body>
    </html>

    想要连接一个数据库。这个是打开数据库的代码。但是运行时总是报错。运行提示如下:



    雷神

    2018年6月22日 10:11

全部回复

  • IIS用户无权访问你的桌面目录

    不要在代码里硬编码路径,用Server.MapPath。



    Visual C++ MVP

    2018年6月22日 14:05
    版主
  • <html>
        <body>
        <%
        set conn=Server.CreateObject("ADODB.Connection")
        conn.Provider="Microsoft.Jet.OLEDB.4.0"
        conn.Open(server.mappath("E:\demo.mdb"))
        conn.Close
        %>
        </body>
    </html>

    还是不行

    雷神

    2018年6月22日 14:27
  • 1 数据库需要在网站目录下。比如你的网站在C:\Inetpub\wwwroot\abc下,那么数据库也要在那下面。如果你的网站不在默认的IIS目录下,那么需要为IIS使用的用户添加读取权限,并且数据库所在的路径需要添加写入权限(因为以可写方式打开mdb时会创建ldb文件)。

    2 用server.mappath转换相对路径到绝对路径。比如你的网站在目录A,数据库的位置在目录A\db\demo.mdb,那么你应该在代码里用server.mappath("db\demo.mdb")。这样你把网站上传到服务器的目录B下之后,你的代码仍旧可以根据相对路径在目录B下找到文件。



    Visual C++ MVP

    2018年6月22日 16:12
    版主
  • 这样肯定是不行的,网站项目运行于IIS进程中,它必须调用server.mappath之后,才能访问磁盘中的文件。

    https://www.webwiz.net/kb/asp-tutorials/connecting-to-an-access-database.htm

    Set adoCon = Server.CreateObject("ADODB.Connection")

    adoCon.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("guestbook.mdb")


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2018年6月25日 0:09