簡體   English   中英

為什么使用 DataDirectory 不起作用但使用完整路徑有效?

[英]Why does using DataDirectory not work but using a full path works?

OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Source=|DataDirectory|\ITGS.accdb\ITGS.accdb");

我正在使用Source=|DataDirectory|\\ITGS.accdb但由於某種原因沒有添加數據; 但是當我指定完整路徑時,數據會添加到數據庫中。

有人能說出為什么使用|DataDirectory| 不起作用?

.NET 運行時添加了對 DataDirectory 宏的支持。 這允許 Visual Studio 在連接字符串中放置一個特殊變量,該變量將在運行時擴展。

因此,您可以像這樣修改連接字符串:

"Data Source=.\SQLExpress;AttachDbFileName=|DataDirectory|\data.mdf"

默認情況下,|DataDirectory| 變量將被擴展如下:

  • 對於放置在用戶計算機上的目錄中的應用程序,這將是應用程序的 (.exe) 文件夾。
  • 對於在 ClickOnce 下運行的應用程序,這將是一個由 ClickOnce 創建的特殊數據文件夾
  • 對於 Web 應用程序,這將是 App_Data 文件夾

在幕后,|DataDirectory| 的值僅來自應用程序域上的屬性。 可以通過執行以下操作來更改該值並覆蓋默認行為:

AppDomain.CurrentDomain.SetData("DataDirectory", newpath)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM