将C#应用程序与数据库打包

将C#应用程序与数据库打包,c#,database,mdf,C#,Database,Mdf,我打包了一个使用数据库的WPF C#应用程序 但是,当我安装打包的应用程序时,它正在使用我在开始时通过visual studio(.mdf)创建的数据库,而不是创建另一个数据库 打包应用程序的全部目的是让我可以在其他计算机上共享它,所以我正在安装它,我需要它为该应用程序实例创建一个新的数据库 有没有办法做到这一点? 是否需要设置一个属性来表示数据库是本地实例?或者在安装时强制程序包创建新的程序包 任何帮助都将不胜感激 谢谢。< /P> < P>确保你的DB部署在客户端,并在应用程序中更改连接字符

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

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

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

有没有办法做到这一点? 是否需要设置一个属性来表示数据库是本地实例?或者在安装时强制程序包创建新的程序包

任何帮助都将不胜感激


谢谢。< /P> < P>确保你的DB部署在客户端,并在应用程序中更改连接字符串以指向它。

只是在自己做这件事的中间,我建议使用SQL紧凑版使过程变得更容易。但是,如果现在在这个过程中太晚了,那么继续使用当前的数据库,但是我不知道下面的方法是否适用于MDF文件

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

您需要做的第一件事是转到MDF的属性,并确保将“复制到输出目录”(copy to output directory)设置为“复制”(如果更新),并且将“生成操作”(build action)设置为“内容”(content)

如果使用安装项目安装应用程序,则需要确保在“项目”、“应用程序属性”、“发布”、“应用程序文件”中,mdf位于列表中,并设置为“数据文件自动”、“必需”和“包括”

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

最后更改代码中的连接字符串,使其能够读取

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”意味着您不在乎用户将应用程序放在哪里,您将始终获得正确的文件

在运行数据库并将其更改为compact之前,它不支持一个合适的sql数据库所能支持的很多东西

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

编辑 如果用户既没有sql server也没有sql Compact,那么最简单的解决方案就是要求他们安装sql CE,或者有一种方法可以使用DLL来完成同样的任务,但我无法实现


此处的链接是

每个客户端计算机上是否都有sql server?是否使用sql server CE?您需要更改连接字符串以将数据库连接到sql server。