我打包了一个使用数据库的WPF C#应用程序。
但是,当我安装打包的应用程序时,它使用我在开始时通过visual studio(.mdf)创建的数据库,而不是创建另一个。
打包应用程序的整个目的是让我可以在其他计算机上共享它,所以我安装它我需要它为该应用程序实例创建一个新的数据库。
有没有办法实现这个目标? 是否有一个属性我需要设置为说数据库是本地实例?或者强制包在安装时创建一个新包?
非常感谢任何帮助。
感谢。
答案 0 :(得分:2)
我自己一直在做这件事,我建议使用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做同样的事情,但我无法让它工作
答案 1 :(得分:1)
确保您的数据库已部署在客户端,并更改应用程序中的连接字符串以指向它。