C# 如何用C语言发布windows窗体应用及其数据库#

C# 如何用C语言发布windows窗体应用及其数据库#,c#,sql,ado.net,windows-forms-designer,C#,Sql,Ado.net,Windows Forms Designer,我用它的数据库制作了一个windows窗体应用程序,我想发布它。该应用程序在我的系统中运行得非常好,但当我在另一台电脑上运行时,它会显示有关无法连接到其数据库的错误。 我还把数据库mdf和ldf文件放在程序文件夹中,但我的应用程序不工作 这是我的连接字符串: string connectionSt=“数据源=DESKTOP-NLKJ55F;初始目录=IndustryContracts;集成安全=True”; 对于学习如何使用数据库开发应用程序的人来说,这是一个常见的错误 基本上:你的方法是错误的

我用它的数据库制作了一个windows窗体应用程序,我想发布它。该应用程序在我的系统中运行得非常好,但当我在另一台电脑上运行时,它会显示有关无法连接到其数据库的错误。 我还把数据库mdf和ldf文件放在程序文件夹中,但我的应用程序不工作

这是我的连接字符串:

string connectionSt=“数据源=DESKTOP-NLKJ55F;初始目录=IndustryContracts;集成安全=True”;

对于学习如何使用数据库开发应用程序的人来说,这是一个常见的错误

基本上:你的方法是错误的。并非所有安装了程序的计算机都要创建数据库。相反,数据库的理想用例是在服务器中创建的,任何需要使用它的应用程序都将通过一些协议(如TCP)连接到它。这有助于封装,并使应用程序更加紧凑

因此,通常当程序需要读写要保存在某处的数据时,人们通常会使用诸如写入CSV文件或制表符分隔的文件,然后从这些文件中读取的方法

还有另一种选择,即使用无服务器数据库(如SQLite),然而,这意味着您需要学习如何实现所述数据库

最后,作为一种非常令人沮丧的方法,也是一种“蛮力”方法,您可以复制数据库创建脚本,在目标计算机中安装DBMS,运行脚本创建DB,然后更改程序中DB的连接字符串以匹配新创建的实例,然后安装程序。看看那有多笨重


请记住:大多数数据库在服务器中运行,即使该服务器是您的PC,因此它们被称为实例。当然,不应该每次安装程序时都复制服务器。

您使用的是哪种数据库?当您本应使用诸如Sqlite或Access之类的进程内数据库时,您是否犯了使用Sql server之类的服务器数据库的错误?我使用的是Sql server Sql server是为同时支持多个用户而设计的。它希望在专用机器上一直在后台运行,使用大量的系统RAM来缓存数据,即使你的应用程序没有运行。它有一个复杂的部署,需要管理员权限,并且需要设置安全性和连接属性。对于窗体应用程序中的本地数据库来说,这是一个非常糟糕的选择。大多数情况下,您不会发布数据库(除非是用于静态查找等)。相反,我建议将连接字符串放在开发人员和目标机器的环境中(例如.NET核心用户机密或环境变量),并将数据库放在您需要的位置。如果数据库架构发生更改,可以对其运行迁移(作为手动脚本或EF迁移)。什么是连接字符串。mdf文件是附加到SQL Server还是使用(localDb)AttachDatabase?本地数据库正在使用数据库的默认文件夹。看起来像:AttachDBFilename=c:\asd\qwe\mydbfile.mdf。本地数据库意味着您没有SQL Server,而且数据库很小。不要同时使用Server=myServerAddress;同时附上文件名。我不同意第一部分。数据库非常适合存储本地数据。您只需要正确的数据库类型。也就是说,您需要一个进程内数据库,比如Sqlite,甚至--gasp--MS Access(因为Access引擎已经在Windows上可用)。对于这个角色,只需避免使用Sql server、MySql、Oracle、Postgresql等服务器产品。你的意思是不更改数据库就无法解决我的问题?除非你想使用我描述的可怕选项3,是的,这就是我的意思。您选择的数据库是基于服务器的,不适合您的用例。