日期:2014-05-20  浏览次数:20993 次

Application.StartupPath 问题
string   connstr   =   "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source= "   +   Application.StartupPath   +   @ "\database\xcrs.mdb ";

这句在窗体中调用时候路径正确指示到软件数据库地址:H:\WebSun\database\xcrs.mdb


但在用户控件的cs文件中调用此数据库连接,再把该用户控件拖到某个窗体上调试,就显示错误: 'H:\Microsoft   Visual   Studio   8\Common7\IDE.\database\xcrs.mdb '不是一个有效的路径。   确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。  

请问为何在窗体中直接调用跟在用户控件中调用,得到的地址截然不同的???究竟错了哪里?

------解决方案--------------------
用这个属性看看
Application.ExecutablePath;
------解决方案--------------------
System.IO.Directory.GetCurrentDirectory()
用这个获取当前程序所在的绝对路径
Application.StartupPath获得是程序起使执行的路径
你如果用的快捷方式打开的程序回返回给你快捷方式的所在路径的
------解决方案--------------------
asp.net应该是Server.MapPath(null)
这样获取的是网站根的绝对路径

Server.MapPath(null) + "根下的数据库路径\数据库名称 "


------解决方案--------------------
using System.IO;

string connstr = string.Format(
@ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " "{0}\database\xcrs.mdb " " ",
Path.GetDirectoryName(Application.ExecutablePath));


//or

string connstr = string.Format(
@ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}\database\xcrs.mdb ",
Path.GetDirectoryName(Application.ExecutablePath));