c# - 在 C# WinForm 应用程序中嵌入 MS Access 数据库

标签 c# database winforms ms-access embedded-resource

我有一个从 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/

相关文章:

c# - 使用 Unity 的策略模式和依赖注入(inject)

c# - 密码屏蔽控制台应用程序

c# - 参数化查询(C#、Oracle): How to produce a more readable representation?

mysql - 解释对 MySQL 和 Puma 服务器的需求

c# - 如果已经打开则关闭子窗体

c# - .net 标签加速键事件

c# - 模拟 java 的 Card Layout Manager 的 Tables 选项卡控件

C# MessageBox 不再显示整个文本字符串

java - Hibernate 和数据库功能与包

C 语言 - 将字符串参数插入 sqlite 数据库 %s 不起作用