【问题标题】:How to deploy a C# WPF app with a sqlite database?如何使用 sqlite 数据库部署 C# WPF 应用程序?
【发布时间】:2020-01-28 17:00:36
【问题描述】:

我创建了一个与 SQLite 数据库交互的 C# WPF 应用程序。我想创建安装文件,以便能够在另一台计算机上安装该应用程序。有谁知道如何使用 SQLite 数据库部署 C# WPF 应用程序,我已经使用 ClickOnce 创建了一个设置文件,但是当我运行该应用程序并对需要从数据库获取数据的应用程序执行某些操作时,它会关闭。

【问题讨论】:

  • 你需要提供更多细节,否则地球上没有多少人能帮助你
  • 我觉得现在好多了,你有答案吗?
  • “然后关闭”。这通常意味着您在某处有未捕获的异常,请参阅stackoverflow.com/questions/8823393/…。您可以尝试对此类异常做出反应,但解决异常发生的问题更有意义。您需要在代码中添加错误处理。请edit您的问题包含您拥有的完整源代码作为minimal reproducible example,其他人可以编译和测试。
  • @miki1307 - 您添加的详细信息不足以让人们回答。请根据 Progman 的评论提供一个可重复的最小示例
  • @BKSpureon 我明白,但我的应用程序很大,并且知道我想制作一个安装文件,所以我认为人们对此有经验,这是通用的。我有带有 SQLite 数据库的 C# WPF 应用程序,我的问题是如何制作安装文件?

标签: c# wpf sqlite deploying


【解决方案1】:

我认为这不仅仅是制作安装文件。我认为,应用程序崩溃是因为软件找不到数据库。如果您以这样一种方式开发您的软件,它会在启动时创建数据库(如果它不退出),那么您创建安装文件的方式就不会成为问题。这就是我的意思:

//use an environment generated file path.
public string _dataBasePath = $@"{ System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData)}\databaseName.db";

使用像 NHibernate 这样的对象关系映射器。您可以覆盖 OnStartUp 并创建您的数据库:

   // In the App.xaml.cs class
    private override void OnStartup(StartupEventArgs e) {
        base.OnStartup(e);
        BuildSchemaAction(config);
    }
    private void BuildSchemaAction(Configuration config) {
        new SchemaExport(config).Create(false, !File.Exists(_dataBasePath));
    }
    protected Configuration config = new Configuration();

数据库文件(因为它是 SQLite)将不存在,因此将被创建。随后,它将不会被创建。 _dataBasePath 字段将是连接字符串中的路径,以便访问创建路径中的数据库。

x.ConnectionString = $"Data Source={_dataBasePath};version=3";

【讨论】:

  • 感谢您的回答。我不在应用程序内部创建数据库,我只从中获取数据并将数据存储在其中
  • 您希望您的设置为所有安装复制数据库文件吗?
  • 如果是,请尝试使用 Inno Setup
  • 您可以指定一个文件夹(bin/release),该文件夹将与您的应用程序一起部署。将您的数据库放在 bin 文件夹中。使用环境生成的文件路径连接到它。
猜你喜欢
  • 1970-01-01
  • 2019-12-25
  • 1970-01-01
  • 1970-01-01
  • 2013-10-29
  • 2020-12-14
  • 2015-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多