【问题标题】:Packaging a C# application with a database使用数据库打包 C# 应用程序
【发布时间】:2012-05-25 09:56:28
【问题描述】:

我已经打包了一个使用数据库的 WPF C# 应用程序。

但是,当我安装打包的应用程序时,它使用的是我在开始时通过 Visual Studio (.mdf) 创建的数据库,而不是创建另一个。

打包应用程序的全部目的是为了让我可以在其他计算机上共享它,所以我安装它我需要它来为应用程序的该实例创建一个新数据库。

有没有办法做到这一点? 我需要设置一个属性来说明数据库是本地实例吗?还是强制安装时创建一个新的包?

任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 每台客户端电脑上是否有一个sql server?
  • 您使用的是 SQL Server CE 吗?
  • 您需要更改连接字符串以将数据库附加到 SQL Server。

标签: c# database mdf


【解决方案1】:

我自己刚刚在做这件事,我建议的一件事是使用 SQL Compact Edition 使这个过程变得更容易,但如果现在在这个过程中为时已晚,那么坚持使用当前数据库,但是我不知道下面的方法是否适用于 MDF 文件。

您如何在客户端计算机上部署应用程序?用户机器是否安装了sql?

您需要做的第一件事是转到 MDF 的属性并确保将复制到输出目录设置为如果较新和构建操作设置为内容的复制。

如果您使用安装项目来安装应用程序,那么您需要确保在项目、应用程序属性、发布、应用程序文件中您的 mdf 在列表中并设置为数据文件自动、必需和包括。

然后右键单击安装程序文件系统中的“应用程序文件夹”,然后添加, 项目输出,文件内容

最后更改代码中的连接字符串,使其变为

using ( SqlCeConnection sqlCon = new SqlCeConnection( @"Data Source=|DataDirectory|\App.sdf;Persist Security Info=False;" )

或者如果你没有使用精简版

using ( SqlConnection sqlCon = new SqlConnection( @"Data Source=|DataDirectory|\App.mdf;Persist Security Info=False;" )

^使用“DataDirectory”意味着你不关心用户把应用程序放在哪里,你总会得到正确的文件

在您运行并将数据库更改为紧凑型之前,它不支持很多正确的 sql 数据库将支持的东西。

在所有这些之后,您可能仍然会遇到权限错误,并且因为它很长,我可能错过了一个步骤,所以如果您需要更多,请发表评论?

编辑 如果用户没有 sql server 或 sql Compact,您最简单的解决方案是要求他们安装 SQL CE,或者有一种方法可以使用 DLL 来做同样的事情,但我无法让它工作

链接在这里http://msdn.microsoft.com/en-us/library/aa983326.aspx

【讨论】:

    【解决方案2】:

    确保您的数据库部署在客户端,并更改应用程序中的连接字符串以指向它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-16
      相关资源
      最近更新 更多