2011-11-08 76 views
0

我需要打開一個文件夾,從3個級別向下應用程序執行(原例如我有一些缺陷)其中:如何打開目錄下幾個級別的原路徑C#?

 // find the path where the executable resides 
     string dbPath = Application.StartupPath; 

     // constructing the connection string - double slashes 
     string connString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" 
      + dbPath + "\\..\\..\\..\\Magazines.accdb; User Id=admin; Password="; 

但是,這將打開:

C:\Documents and Settings\Server\Desktop\Lab 10\Lab 10\Lab 10\bin\Debug\..\..\..\Magazines.accdb 

從原來的目錄節目開始的地方:

C:\Documents and Settings\Server\Desktop\Lab 10\Lab 10\Lab 10\bin\Debug\ 

,我需要它是:

C:\Documents and Settings\Server\Desktop\Lab 10\Lab 10\Magazines.accdb 

這樣做的正確性是什麼?

+0

這不正確嗎? – BlackBear

+0

Lab10 \ Lab10 \ Lab10爲什麼? – genesis

+0

@BlackBear:哦,它的工作原理,它必須處理錯誤的文件格式。 – HelpNeeder

回答

3

使用DirectoryInfo中,用於評估'..'

var path = new DirectoryInfo (Path.Combine("c:/bla", "../newBla")).FullName() 

還可以使用Path.Combine爲緩解和更可靠的組合。

2

變化Magazines.accdb的屬性,所以,當你建項目將被複制到bin \ Debug文件夾。

您可以通過右鍵單擊解決方案資源管理器中的文件,然後將複製到輸出目錄更改爲始終複製。

+0

Btw。如何使Access 2007文件工作?現在我知道我需要使用.mdb(2000-2003)文件。 – HelpNeeder

+0

這應該是一個新問題。我不知道答案 - 不是訪問專家:) – jrummell

0

夫婦選項只是把你的數據庫在同一文件夾作爲可執行(所以,在你的debug文件夾中),這其實是有道理的,當您打包可執行的人,你通常會具有生成的文件夾結構。

另一種選擇是,如果數據庫文件添加到項目中,你可以指定「複製到輸出目錄」,以「複製如果較新的」,這將是否有更新的複製。

+1

如果打包數據庫文件住在同一文件夾作爲您的可執行文件,你會如果安裝在Program Files目錄下的可執行程序需要管理員權限。 – Ants