有关C#中相对路径的问题,解决问题绝对给50分
在做一个有关数据库连接的应用程序。用Access建的数据库。在建立数据库连接的时候,就制定了数据库的存放位置--是绝对路径。在配置文件里的AppSettings里的values上显示的是绝对路径,例如:
E:\application\school.mdb. 这样在自己的本地的机器上能正常运行。如果在其他的机器上运行的话,最好使用相对路径。
但是我不知道怎么在程序中使用或者是配置相对路径,请各位大虾能详细的解释一下到底怎么在程序中设置相对路径。越详细越好。比如:要用到什么类,需要如何改动config文件、等等
我在此拜谢!如果解决问题,一定附上50分,说到做到。
问题点数:50、回复次数:11Top
1 楼dugupiaoyun(独孤飘云)回复于 2005-07-01 22:21:19 得分 0
举个例子说,你新建一个项目,这个项目默认的为WindowsApplication1,那么在C:\Documents and Settings\wangrong\My Documents\Visual Studio Projects\WindowsApplication1\WindowsApplication1里你比方说建了个文件夹叫‘数据库文件’,那么此时你要使用这个Access文件(比如说路径为C:\Documents and Settings\wangrong\My Documents\Visual Studio Projects\WindowsApplication1\WindowsApplication1\数据库文件\abc.mdb),且打包时也装进去,就可以不用配置什么路径了,只用在调用代码里将路径设为System.Environment.CurrentDirectory+"..\..\数据库文件\abc.mdb"即可。
System.Environment.CurrentDirectory的作用就是得到你工程的debug目录位置。Top
2 楼xiamihgy(毛虫)回复于 2005-07-01 22:29:48 得分 0
school.mdb 在程序运行目录下,用下面的路径就可以
System.Windows.Forms.Application.StartupPath +"\\school.mdb"
Top
3 楼yegucheng(无名)回复于 2005-07-01 22:36:14 得分 0
Access数据库一般是放在站点里面的,也只有这样才可以使用相对路径,否则不可能使用相对路径,还有一种把Access数据库放在虚拟目录里面,然后,在用站点的路径访问.
几种都试试把,
1.本机,
a.绝对路径可以
b.相对路径可以(只对站点里面)
2.其他机器(限局域网)
a.相对路径,放在虚拟目录里面,比如:放在其他机器的C:\Inetpub\wwwroot目录里面,假设改机器名为B,
那么相对路径为: http://B/school.mdb
你试试Top
4 楼renyu732(Sysinfo)回复于 2005-07-02 07:59:10 得分 0
web.config保存Access数据库路径用绝对路径.
Top
5 楼renyu732(Sysinfo)回复于 2005-07-02 08:00:26 得分 0
可通过Response.write(Request.PhysicalApplicationPath)
获取当前正在执行的服务器应用程序的根目录的物理文件系统路径。Top
6 楼dutguoyi(新鲜鱼排)回复于 2005-07-02 08:07:37 得分 50
string str5=Application.StartupPath;//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
////////////////////////////////////////////////
string str1 =Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的exe的文件名。
string str2=Environment.CurrentDirectory;//获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。
//备注 按照定义,如果该进程在本地或网络驱动器的根目录中启动,则此属性的值为驱动器名称后跟一个尾部反斜杠(如“C:\”)。如果该进程在子目录中启动,则此属性的值为不带尾部反斜杠的驱动器和子目录路径(如“C:\mySubDirectory”)。
string str3=Directory.GetCurrentDirectory();//获取应用程序的当前工作目录。
string str4=AppDomain.CurrentDomain.BaseDirectory;//获取基目录,它由程序集冲突解决程序用来探测程序集。
string str5=Application.StartupPath;//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
string str6=Application.ExecutablePath;//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。
string str7=AppDomain.CurrentDomain.SetupInformation.ApplicationBase;//获取或设置包含该应用程序的目录的名称。Top
7 楼wutao5935(小狼)回复于 2005-07-02 09:41:14 得分 0
MARK!Top
8 楼jiekewei(皆可为)回复于 2005-07-02 10:35:45 得分 0
你可以把数据库放到项目文件夹下 : (如: 解决方案\项目文件夹\数据库.mdb)
这样你把连接字符串改成 :
OleDbConnection conn=new OleDbConnection("provider=Microsoft.jet.oledb.4.0;data source="+Server.MapPath("Flower.mdb"));
这样你把你的工程带到哪都可以用了.
(我用是好用,你试试吧) ^_^Top
9 楼BigIdiot628(大笨蛋,谁叫你不努力!)回复于 2005-07-02 11:51:22 得分 0
AppDomain.CurrentDomain.BaseDirectoryTop
10 楼black_or_white(白纸黑字)回复于 2005-07-02 14:48:11 得分 0
是winform的。我在程序中建了一个类用来连接数据库,其他的程序用来共享这个连接。这个类是这样写的:
public class Connection
{
public OleDbConnection conn = null;
public Connection()
{
conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=E:\jiaxiao\controlSchool.mdb;";
}
}
app.config是这样的:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key = "JXConnectionString" value ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source= e:\jiaxiao\controlSchool.mdb;" />
</appSettings>
</configuration>
具体点我应该怎么改写app.config, 类Connection需要什么更改吗?当然了还是那个问题,使用相对路径。Top
11 楼black_or_white(白纸黑字)回复于 2005-07-02 15:43:50 得分 0
谢谢各位的支持和帮助。
我分数不多,不能给了。谢谢Top




