我要连接access数据库,.net中的OleDbConnection连接数据库很方便,但是我有两个问题:
1.如果数据库的绝对地址是 e:/webform/db/123.mdb 那么我在别的机器上发布网站的时候,数据库同样要放在 e:/webform/db/123.mdb ,否则报错,找不到数据库!!这样很不方便阿,能不能使用相对路径,比如 db/123.mdb 这样就可以和站点放在同一个文件夹下了。
2. 大家使过没有,我把数据库放在虚拟目录下(C:\Inetpub\wwwroot),数据库给写权限,但是就是不能对数据库进行操作,不知道是为何,各位高手帮帮我吧

解决方案 »

  1.   

    1.如果你是虚拟目录,假设虚拟目录名为webform,那么,你可以把你的数据库文件路径写在web.config里面
    <add key="sysDSN" value="/webform/db/123.mdb"/>
    ,然后需要使用的时候,用一个变量取得定义的值
    string tmp = ....
    然后,就可以用
    绝对路径 = server.MapPath(tmp);
    这种方式求取到绝对路径,无论你的虚拟目录是建立在哪个硬盘上,哪个目录下,它总是会求取出正确的路径来.2.为什么你要把数据库文件放在那里?数据库必须放在本网站的路径下,而你所说的那个文件夹,实际上是IIS的默认要目录.你可以在该目录下再建立一个子目录,然后把它 一个虚拟目录,把数据库文件放在该虚拟目录之下,这样就没有问题了.
      

  2.   

    1.如果数据库的绝对地址是 e:/webform/db/123.mdb 那么我在别的机器上发布网站的时候,数据库同样要放在 e:/webform/db/123.mdb ,否则报错,找不到数据库!!这样很不方便阿,能不能使用相对路径,比如 db/123.mdb 这样就可以和站点放在同一个文件夹下了。
    ===========
    可能你对WEB还不是很了解。可以用Server.MapPath相对路径来。
    比如你跟目录下有个文件叫abc.txt
    那么你要指定文件,因为在虚拟主机上,所以你不可能做到知道其真实路径方法。可以用相对路径。
    server.mappath("abc.txt")
    这样就能得到你要的这个跟目录下的文件,
    可以察看相关帮助SDK/MSDN数据库给写权限,但是就是不能对数据库进行操作,不知道是为何,各位高手帮帮我吧
    =================
    你本地吗?你设置下users用户权限为可读可写,侃侃是否能够解决问题!
      

  3.   

    感谢楼上二位,是这样的,我写.net程序时间不常,用的是visual studio 2003,vs用起来很简单是大家公认的,所以很多深层面的东西我不知道,所以才会有这样的问题。
    我问的问题可能和楼上二位说的不很一样,“数据库连接池”我看了一些微软的资料,说的好像是在vs里建立和若干个数据库连接,这些连接是vs建立的,就像是vs中的控件一样,你要是使用的话直接拖到web窗体中就可以了,微软说这样做可以减少访问数据库的开销,因为建立库连接所需的资源远远大于访问库的资源,vs中的OleDbConnecion控件就是一个数据库连接控件,用它可以选择和数据库的连接,就是我上面说的e:/webform/db/123.mdb ,什么时候需要访问库了,我直使用OleDbConnection就可以了,所以我发现数据库建立连接的全是绝对地址,我也不知道该怎么说,不知道各位明白我的意思不??
    着急阿!
      

  4.   

    你可以用 path 这个方法来写相对路径.还有一种方法就是用ODBC链接数据库也只用写相对路径,不过就是在用前要先配置好.
      

  5.   

    server.mappath
    config windows验证改为none 看看.
      

  6.   

    Server.MapPath(..)不行吗?? 
    说不着边,什么连接池!
      

  7.   

    你可以看一下这个:
    http://search.microsoft.com/search/results.aspx?view=zh-cn&st=a&na=81&qu=%e8%bf%9e%e6%8e%a5%e6%b1%a0
      

  8.   

    如果你用的数据库连接字符串每次都是一样的,系统会自动启用连接池的.不过你说的问题的确有点和连接池没什么关系.用好server.mappath,还有就是保证你的数据库文件是你项目的一部分,并且赋给ASPNET写权限.