繁体   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