【问题标题】:Run a c# program with local database on another computer在另一台计算机上运行具有本地数据库的 c# 程序
【发布时间】:2022-01-19 08:58:38
【问题描述】:

为了简单起见 - 我正在为我的大学作业开发一个课程项目。我在 WinForms 和 C# 中创建了一个应用程序。为了存储这个应用程序的各种数据,例如注册信息、帐户以及各种应用程序功能相关的数据,我使用了Microsoft SQL Server 数据库。现在最后,我意识到我无法将项目发送给我的老师,它无法在他的计算机上运行,​​因为经过一些阅读和研究,我发现我可能需要一个 mdf 文件 我找不到,我认为这是因为我在 SQL Server 应用程序中创建了表,而不是通过 Visual Studio。

我的连接字符串:con = new SqlConnection(@"Data Source=MyPC;Initial Catalog=SISDB;Integrated Security=True");

如您所见,连接字符串被硬编码到我的电脑

我的问题是 - 有哪些步骤,或者我应该怎么做,才能使这个应用程序在我的教师计算机上运行得一样好,而数据库没有问题?

【问题讨论】:

  • 您可以获取数据库架构脚本并共享它们。脚本还将在另一端创建数据库。应在应用程序中维护连接字符串。配置文件,以便教师可以根据他的 PC 设置更改连接字符串。
  • 您应该能够通过查看数据库属性轻松找到 mdf,但由于许多原因,它仍然可能存在问题。如果我必须做一个这样的项目,我会使用像 Sqlite 这样的嵌入式数据库,因为它易于分发。
  • AS @AmitVerma 说 conn 字符串应该在某个配置文件(app.config,一些 ini,...)中,关于数据库文件,您可以在 SQL 管理器中进行备份并发送它给你的老师
  • 我认为这是一个相当有用的教训,即在编写应用程序时需要考虑部署。有各种嵌入式数据库旨在使这更容易,但这可能对手头的问题没有多大帮助。
  • 使用 SQL Server 是否有特定要求?如果没有,除非您使用过特定的 SQL Server 功能,否则最好使用 sqlite。这适用于本地文件(甚至在内存中)。请记住,sqlite 不支持相同的功能集,但如果您坚持基本用法,则工作量应该是有限的。

标签: c# sql-server database winforms


【解决方案1】:

据我所知,您有几个选择:

在您的计算机上运行该软件

可以将您的计算机带给老师,也可以使用您最喜欢的远程桌面软件。这应该可以让您证明您的程序无需重新安装即可运行。

在您的教师计算机上安装数据库

这可能涉及有关如何安装数据库以及包括架构和数据的一些说明。或者可能创建一个安装程序或脚本来执行全部或部分设置过程。这可能需要教师方面的大部分工作。

远程访问数据库

更改connection string 以通过网络访问您的计算机。这可能会涉及在防火墙中打开端口,而如果有任何外部防火墙,这可能会很困难。这也将要求您的计算机在线。这样做的一个问题是测试的难度,并且可能会导致它对您很好,但对您的老师却不适用。

改变你的程序

有几种类型的embedded databases 可以作为程序的一部分运行和部署。 SqLite 可能是最受欢迎的,但也有很多替代品。在某些情况下,仅将数据存储在常规 Json 文件中就足够了。这个选项自然会涉及重写你的程序的一部分。

最后,我建议你和你的老师谈谈,解释情况并问他/她哪种选择对你们俩来说最容易。

在现实世界中,您需要将数据库部署和升级作为初始设计的一部分。您通常会在数据库之上设计一个(Web)服务,为您的客户端提供比 SQL 更高级别的 API。

【讨论】:

  • 顶级答案。虽然还不能投票,但我会的。谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-05-06
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 2011-11-19
相关资源
最近更新 更多