2014-10-29 140 views
1

我想在特定的文件夹数据库的文件,我做了什么之前,查找自定义路径是这样的:定位在特定的文件夹中的特定文件c#

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:/Fuhans's Folder/Project/SIA - Point of Sales/SIA - Point of Sales/Assets/Database/db1.accdb; Persist Security Info=False;"; 

,我认为是有查找数据库文件的快捷方式,而不是编写特定的文件夹?

,我想出了:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=../Assets/Database/db1.accdb; Persist Security Info=False;"; 

但是,当我把它改为喜欢第二个,错误消息看起来像下面:

enter image description here

我的问题是:有一种方法可以删除bin位置路径,但仍然像查看第二个数据库一样查找数据库文件?

谢谢

+0

谢谢你为这个问题投票的人:) – 2014-10-29 11:45:46

回答

2

添加另一个../中的相对路径的前面:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=../../Assets/Database/db1.accdb; Persist Security Info=False;"; 
+0

谢谢!你是最棒的。 – 2014-10-29 11:51:26

2

你应该避免你的连接字符串和相对路径中使用绝对路径(与..是很容易被打破当你部署)。你可以使用|DataDirectory|db1.accdb

In ASP.NET to use a relative路径,在的WinForms它不是可用但常数使用应用程序域特性解决。只需将您的main()方法中你的基地浴:

AppDomain.Current.SetData("RootFolder", 
    @"D:\Fuhans's Folder\Project\SIA - Point of Sales\SIA - Point of Sales"); 

在连接字符串:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|RootFolder|Assets/Database/db1.accdb; 

为什么要使用绝对路径,而不是一个相对的?因为它不会被工作目录的影响,它更容易添加多个常量:

AppDomain.Current.SetData("Bin", 
    Application.StartupPath); 
AppDomain.Current.SetData("AppData", 
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); 

,第二种选择将更好的工作与UAC(其中程序的文件夹可能不会写在所有)。还要注意路径仍然是可导航,因为它会被标准化。

假设你的编译于斌/调试的开发环境:

Data Source=|Bin|../../Assets/Database/db1.accdb 

假设您的应用程序将被部署,它会在数据文件夹(不是程序文件夹)工作:

Data Source=|AppData|Assets/Database/db1.accdb 

简单而直接。

+0

但是,这使得应用程序必须安装在特定的文件夹右先生@Adriano Repetti?如果用户将文件夹更改为与设置的字符串不匹配的其他内容,会发生什么情况?和“容易被打破”,你指的是什么先生?这怎么可能?谢谢 – 2014-10-29 11:54:11

+1

@UnknownUser当然不应该使用硬编码路径!容易被破坏,因为相对路径会受到工作目录的影响,如果你声明'RootFolder'是'Application.StartupPath',那么连接字符串中的路径将始终以可执行路径为根。另外请注意,如果您正在编译为'root \ debug \ release',那么您仍然可以合并,您的**绝对路径将为'| RootFolder | .. \ .. \ assets \ db1.accdb'。请注意,您可以定义**多个常量**(例如对于“AppData”目录),UAC程序文件夹可能不可写... – 2014-10-29 12:05:13

+0

+1您的清晰解释先生@Adriano Repetti。先生非常感谢您。 – 2014-10-29 12:48:05

相关问题