日期:2014-05-18  浏览次数:20424 次

请问一个在vs2005关于access数据库连接和mapPath的问题
环境:VS2005+.net 2.0

首先我创建了一个DB类来专门创建对ACCESS的连接,发现无法使用MapPath()函数

然后只好想到用参数传递。结果发现MapPath返回的路径却是
d:\inetpub\wwwroot\dataBase\dataBase.mdb

但我所创建的网站正确路径应该是d:\inetpub\wwwroot\home\
所以数据库位置应该在d:\inetpub\wwwroot\dataBase\home\dataBase.mdb 

DB类中的函数
  public static OleDbConnection con(string dataPath)
{
string conString;
conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
conString += dataPath;
return new OleDbConnection(conString);
}

其他页面调用的函数
  pathString = Server.MapPath("\\dataBase\\dataBase.mdb");
OleDbConnection con = DB.con(pathString);


请问如何解决?因为网站使用要传到虚拟主机上去,如何获取自己website的目录名呢?

------解决方案--------------------
pathString = Server.MapPath("dataBase\\dataBase.mdb "); 

pathString = Server.MapPath("dataBase/dataBase.mdb "); 

最前面加/或\\表示从站点根目录下算起. 最前面不加/或\\表示从当前目录算起

但是你的写法没有问题. 返回的mappath也没有问题.
网站 d:\inetpub\wwwroot\home\
你的wwwroot应该是根目录吧,home是个子目录
你的数据库路径明明是 database/database.mdb 怎么可能会能成为 database/home/database.mdb
如果你要把mdb放到 home目录下, 那么 pathString = Server.MapPath("/dataBase/home/dataBase.mdb ");
------解决方案--------------------
可以取自己的website目录(如果有权限的话), 但是没有取的必要.
------解决方案--------------------
~//dataBase//dataBase.mdb