安装后,Windows 窗体项目未显示来自我的嵌入式 MS Access DB 的任何数据
Posted
技术标签:
【中文标题】安装后,Windows 窗体项目未显示来自我的嵌入式 MS Access DB 的任何数据【英文标题】:Windows form project is not showing any data from my embedded MS Access DB after installation 【发布时间】:2017-06-19 08:10:55 【问题描述】:我是初学者,我想在我的 Windows 窗体项目中使用 MS Access DB。我的 mdb 文件在调试模式下运行时显示数据。一旦我创建了一个 exe 并安装它,它就不会显示任何数据。数据库没有密码保护。
在 App.config 中这是连接字符串
<connectionStrings>
<add name="dbConnectionString"
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\mydb.mdb" providerName="System.Data.OleDb" />
</connectionStrings>
【问题讨论】:
你能显示为你给的数据库的路径吗? @AbiTom 我已经添加了连接字符串 你可以试试直接路径,比如 Data Source="C:\\mydb.mdb" 让我知道 如果我使用上面的路径,那么这意味着 mdb 文件没有嵌入,但我想将 mdb 文件嵌入到我的 windows 窗体项目中 如果直接路径有效,我认为这是问题,请检查我的答案 【参考方案1】:我假设当您使用“Data Source=|DataDirectory|”时安装并运行应用程序,例如它在 C:\MyApp\Data\ 文件夹中查找 DB。它应该是 C:\MyApp 没有额外的 \Data 文件夹。
您需要调用 AppDomain.SetData 方法来指定 |DataDirectory| 的位置指向
var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
string relative = @"..\..\App_Data\";
string absolute = Path.GetFullPath(Path.Combine(baseDirectory, relative));
AppDomain.CurrentDomain.SetData("DataDirectory", absolute);
【讨论】:
由于我使用的是 windows 窗体应用程序,它不包含 Global.asax 文件。我无法访问 Server.MapPath() 的另一件事。它不是一个网络应用程序。 抱歉你可以在Program主类中设置 是的,我在 Program.cs 中添加了它,但是 Server.MapPath() 呢?【参考方案2】:我必须在我的安装项目中添加 .mdb 文件。
【讨论】:
以上是关于安装后,Windows 窗体项目未显示来自我的嵌入式 MS Access DB 的任何数据的主要内容,如果未能解决你的问题,请参考以下文章
添加新记录时,Visual Studio SQL 默认值未显示在 Windows 窗体上