OleDb 数据源 - 为啥它会出现在这个随机位置? [复制]

Posted

技术标签:

【中文标题】OleDb 数据源 - 为啥它会出现在这个随机位置? [复制]【英文标题】:OleDb Data Source - Why does it look in this random location? [duplicate]OleDb 数据源 - 为什么它会出现在这个随机位置? [复制] 【发布时间】:2014-04-09 21:22:38 【问题描述】:

我正在使用 OleDb 连接到 access 数据库,并且数据源位于我的项目文件中。由于该项目将被压缩和移动,我希望无论如何都能找到它。

connetionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=University.accdb;";

在我使用数据源的任何其他时间,我都可以这样放置它的位置,但是,当我在这里这样做时,它会尝试在 'C:\Program Files (x86)\Common Files \Microsoft Shared\DevServer\10.0\University.accdb'。

有什么方法可以让它自动在项目文件中查找?

【问题讨论】:

【参考方案1】:

尝试将数据库文件放在解决方案中的 App_Data 目录中。然后将其用于您的连接字符串...

connetionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\University.accdb;";

|DataDirectory| 将在其中找到您的 App_Data 文件夹。

编辑:基于this SO 帖子,您还需要在 Global.asax 的 Application_Start 方法中添加以下行。

AppDomain.CurrentDomain.SetData("DataDirectory", Server.MapPath("~/App_Data/"));

【讨论】:

这会在 \ 处给我一个“无法识别的转义序列”错误。 我更正了它...这是 C# 字符串的标准。您需要 @ 符号来告诉它不要使用转义序列或转义单个 \ 通过将其替换为 \\. @smritz 我上面的编辑解决了这个问题吗?我用连接字符串编辑了该行。

以上是关于OleDb 数据源 - 为啥它会出现在这个随机位置? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 MySQL UDF 返回随机数据?

为啥 OleDb ExecuteScalar 方法在查询 COUNT 时返回 Decimal?

OleDb:为啥我不能用我的数据源中的完整模式和信息轻松地填充我的数据集?

为啥当我将数字添加到字符串时,它会在 C++ 中显示随机文本?

为啥 VFP .NET OLEdb 提供程序不能在 64 位 Windows 中工作?

为啥 RecyclerView 项目在 GridLayoutManager 中随机移动位置?