c# Windows窗体应用程序,数据库不在客户端系统上运行

本文关键字:客户端 客户 端系统 运行 窗体 Windows 应用程序 数据库 | 更新日期: 2023-09-27 18:14:21

我用c#开发了一个使用SQL Server数据库连接的Windows窗体应用程序。我是在。net Framework 4.0和SQL Server 2008 R2中开发的。我的应用程序正在使用应用程序根目录中名为AG.mdf的本地数据库。

我的连接字符串:

Data Source=.;AttachDbFilename=|DataDirectory|''AG.mdf;Integrated     Security=True;User Instance=True 

我通过在Visual Studio安装程序模板中添加Setup Project作为我的应用程序中的新项目来创建安装程序。我构建了Setup项目,它为我创建了安装程序。我将应用程序部署在用户系统上,应用程序开始运行,但突然弹出错误

应用程序中发生了未处理的异常。如果单击"继续",应用程序将忽略此消息并尝试继续。如果您点击退出,应用程序将立即关闭。

在建立到SQL Server的连接时发生了与网络相关或特定于实例的错误。未找到服务器或无法访问服务器。验证实例名是否正确,SQL Server是否配置为允许远程连接。(提供程序:Named Pipes提供程序,错误:40 -无法打开到SQL Server的连接)

p。S:我在我的用户系统上也安装了。net Framework 4.0和SQL Server Compact Edition !

我应该退出编程吗:'(

c# Windows窗体应用程序,数据库不在客户端系统上运行

我想你可能混淆了快速版和精简版;他们真的很不一样。

Compact Edition采用SDF数据库文件,并且是嵌入式数据库,而不是单独的服务器。我不认为它可以直接与MDF一起工作,但你可以将MDF导出为SDF。

SQLCE不知道用户实例、集成安全或数据库附件。我认为您需要直接在Data Source部分中找到SDF文件的路径,但是必须是SDF,而不是MDF。

所以基本上,看起来你正在安装精简版,但然后使用连接字符串和数据文件的完整/快速版,这是不太可能工作。

非常感谢大家的帮助。我自己解决了这个问题。我唯一关心的是在客户端机器上安装SQL Server,但后来我意识到我必须在客户端系统上安装数据库管理工具(SQL Server)才能使我的应用程序运行。
因此,我在客户端机器上安装了SQL Server Express,并更改了我的QueryString,如下所示

Data Source=.'SQLEXPRESS;AttachDbFilename=|DataDirectory|'AG.mdf;Database=AG;Integrated Security=True;User Instance=True;Trusted_Connection=Yes

此外,我还赋予完全控制权限作为允许在包含我部署的应用程序的文件夹上,以便我的应用程序中的Dot . Net框架可以访问部署的。mdf数据库
编码快乐!:)

"|DataDirectory|'AG。mdf" in意味着它需要在数据目录中查找DB,而不是在应用程序的根文件夹中查找DB。

设置数据目录的小示例:

AppDomain.CurrentDomain.SetData("DataDirectory", AppDomain.CurrentDomain.BaseDirectory + "DB");