我有一个从 MS Access 数据库 Access 数据的 C# winform 应用程序。这意味着我的应用程序至少需要 2 个文件,.exe 文件和 .accdb 文件。是否可以将数据库包含在 .exe 文件中,以便我的解决方案包含一个文件(与在项目资源中包含图像的方式相同)?如果可能的话,他们是否有任何不应该这样做的主要原因以及您将如何从代码 Access 数据?该项目只是供个人使用的一个小项目,因此如果性能受到影响也没有太大关系。
提前致谢
最佳答案
它可以完成。只需将它添加到您的项目中,就像添加任何其他文件一样(右键单击项目 -> 添加 -> 现有项),然后取消将弹出的所有对话框,让您为您处理它,然后从您的项目中右键单击您的数据库资源管理器,转到属性并选择 Build Action
:Embedded Resource
。
然后使用下面的方法将您的数据库转储到一个临时文件中,您可以通过调用 Path.GetTempFileName
创建该文件。
internal void CreateBlankDatabase(string destFile)
{
using (Stream source = new MemoryStream(Properties.Resources.MyEmbeddedDatabase))
using (Stream target = File.Open(destFile, FileMode.Truncate))
{
source.CopyTo(target);
}
}
(请注意,MyEmbeddedDatabase
将是您的嵌入式数据库名称)。然后在连接字符串中使用临时文件名。确保在完成后删除临时文件。另外,正如其他人所说,您将无法修改和保存任何数据。
关于c# - 在 C# WinForm 应用程序中嵌入 MS Access 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4106530/