我用的是ACCESS数据库,所有操作数据库的代码都集中在了一个类库里,数据库路径定义在Web.config文件里,但发现只能定义绝对的路径,在Web.config里不能使用任何涵数方法,我也想定义在那个类库里,但发现在类库里没有能用的方法取得网站所在物理路径,定义相对路径又是从系统目录(c:\winnt\system32)开始的.真是没办法了.不能定义绝对路径的,因为不知道虚拟主机的绝对路径就算知道能改一下,以后这个网站就没什么可移植性了...以前用mssql数据库一直这样做,没想到用ACCESS数据库后会遇到这种问题.
错误提示如下:
'C:\WINNT\system32\Database\mydb.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 'C:\WINNT\system32\Database\mydb.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。

解决方案 »

  1.   

    我写的是:  <appSettings>
             <add key="myconn" value="provider=Microsoft.Jet.OleDb.4.0;Data   Source+=Server.Mappath['database/mydb.mdb'];" />
       </appSettings>
    还有:  <appSettings>
             <add key="myconn" value="provider=Microsoft.Jet.OleDb.4.0;Data Source=Server.Mappath[database/mydb.mdb];" />
       </appSettings>
    都有错误。
      

  2.   

    ~/database/db.mdb
    然后在程序:
    Server.MapPath("~/database/db.mdb")
    ~/表示根目录!
      

  3.   

    <add key="myconn" value="provider=Microsoft.Jet.OleDb.4.0;Data Source=Server.Mappath[database/mydb.mdb];" />
    寒一个先……强过spring了
      

  4.   

    找到"web窗体设计器生成的代码" 几个字点开,找到OleDbConnection1这一段,替换掉.再不对找我       '
            'OleDbConnection1
            '
            Me.OleDbConnection1.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database L" & _
            "ocking Mode=1;Data Source=" & Server.MapPath("database\mydb.mdb") & ";Jet OLEDB:Engine Type=5;Provider=""Microso" & _
            "ft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist securit" & _
            "y info=False;Extended Properties=;Mode=Share Deny None;Jet OLEDB:Encrypt Databas" & _
            "e=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Co" & _
            "mpact=False;Jet OLEDB:Compact Without Replica Repair=False;User ID=Admin;Jet OLE" & _
            "DB:Global Bulk Transactions=1"
      

  5.   

    "provider=""Microsoft.Jet.OleDb.4.0"";Data Source="+request.PhysicalApplicationPath+"数据库名.mdb"
      

  6.   

    C:\\WINNT\\system32\\Database\\mydb.mdb
      

  7.   

    分太少.
    web.config
    <appsettings>
    <add key="connstring" vlaue="database/db.mdb" />
    </appsettings>根目录
    database 目录
    webui
    classfile  目录
      class1.vbclass1.vb中dim dsn as string="provider=microsoft.jet.oledb.4.0;data source=" & httpcontext.current.server.mappath("../" & System.Configuration.ConfigurationSettings.AppSettings("connstring"))这个类中,表示所有调用此类的webform,都不在根目录,即存在于webui中的如果不使用类,即在根目录下的一个文件,可以去掉 "../"即可.
      

  8.   

    如果你前后台都 同一个目录,用Server.MapPath("~/database/db.mdb")
    就可以了
      

  9.   

    dim con as new OleDbConnection
    dim constr as string
    constr="provider=""Microsoft.Jet.OleDb.4.0"";Data Source="+request.PhysicalApplicationPath+"数据库名.mdb"
    con.connectionstring=constr