在 Visual Studio 2017 年创建安装项目(使用 SQL Server 数据库)

Create Setup Project in Visual Studio 2017 (with MSSQL Server Database)

我用C#做了一个项目(Windows Form Application),数据库操作用的是MSSQL Server 2017。我的项目如下;用户从列表框中选择一个值并按下按钮进行分析。完成此过程后,我对 table 中的值执行数学运算,并将结果列在 DataGridView 上。所以,用户不会对数据库做任何操作,你可以认为它是只读的。

如果您希望允许不同计算机上的用户使用此程序,他们将需要访问数据库。这可以通过向他们提供数据库或将您的数据库放在可以远程访问的服务器上来完成。

What kind of problems can I experience when installing this project to the user?

根据不同的因素,可能会出现许多问题,但是,如果您为数据库使用远程服务器,则由于不知道如何访问数据库,问题可能会更少。

了解您可能无法访问远程服务器来放置您的数据库,将您的数据库文件放在用户的计算机上可能更容易。由此产生的问题很可能是由于您的数据库文件位置和连接字符串不匹配造成的。因此,如果您决定将数据库下载到用户计算机上,您的错误很可能与数据库文件位置有关。

What kind of problems can I experience when installing this project to the user? Do I need to install MSSQL Server to the user?

您很可能只需要向用户提供数据库文件。您可能 运行 遇到的问题是,如果您向用户提供数据库并将其放在他们的计算机上,您可能 运行 遇到与您的连接字符串相关的数据库位置不正确的问题 app.config.

Is it enough to be this way? Will I have problems with database operations when I install it on another computer? Will I need to change the SQL connection clause?

是的,如果您将数据库下载到用户计算机,您将需要更改 SQL 连接子句,除非您可以 运行tee 将数据库放置在与连接中匹配的位置细绳。

Will I have problems with database operations when I install it on another computer?

你不应该。

Will I need to change the SQL connection clause?

如果您将数据库放在服务器上,则肯定不会。也许如果您将数据库下载到用户计算机上。

旁注

如果您想让项目可移植并且服务器上没有数据库,我建议您创建一个 .mdf 文件(这是 Microsoft SQL 服务器使用的文件格式。)并创建一个在项目的调试文件夹(或 .exe 文件所在的位置)中创建文件并将其命名为 DATABASE,然后将 .mdf 放入此文件中。现在更改您的连接字符串以在当前目录的 DATABASE 文件夹中找到该数据库,该目录将成为项目的 Debug 文件夹。这应该可以解决您的大部分问题,因为项目在哪里,数据库文件也在哪里。

以下是设置 conString 的方法:

connectionString="data source={AppDir}\data\DATABASE\yourDataBaseName.mdf

在您的代码中:

ConnectionStringSettings c = ConfigurationManager.ConnectionStrings[name];  



if (c == null)
{
    ... handle missing connection string ...
}
string fixedConnectionString = c.ConnectionString.Replace("{AppDir}", AppDomain.CurrentDomain.BaseDirectory);
... use fixedConnectionString

这将始终从您的 .exe 所在的目录开始。

P.S。如果您经常使用 sql 数据库,我强烈推荐 ssms,它是 SQL 服务器管理工​​作室。它让我的事情变得容易多了。也可能对你有帮助。 :)

好吧,至少可以说,为此使用 SQL 服务器是极端的。 SQL 服务器更适合数据库密集型应用程序,它需要在计算机上设置很多东西,而且通常不用于客户端应用程序,尽管大型桌面应用程序可能会使用 SQL Server Express (精简的免费版本)如果他们需要如此高的性能。

我建议你把它放在一边,使用 SQL Server Express LocalDb(一个 .mdb 文件),它可以很容易地安装;或者您甚至可以使用无需安装的 SQLite。

关于您的问题:

What kind of problems can I experience when installing this project to the user?

您可能会 运行 很多问题,SQL 服务器设置可能会因数以千计的不同问题而失败,卸载很容易使系统处于损坏状态。

Do I need to install MSSQL Server to the user? I set it up on my own computer and I installed it on my computer and there was no problem, I have added a backup of my database in the MSSQL Server into my setup file. Is it enough to be this way?

如果你想使用SQL服务器,那么是的,需要安装。

Will I have problems with database operations when I install it on another computer?

假设安装成功,可能不会。

Will I need to change the SQL connection clause?

不一定,使用 Server= .\KnownServerInstanceName 就足以使其始终有效。