【问题标题】:Can MySQL server load data from a C# application?MySQL 服务器可以从 C# 应用程序加载数据吗?
【发布时间】:2016-02-04 07:22:24
【问题描述】:

我在我的 PC 上使用本地 MySQL 服务器(MySQL Workbench 6.3),并使用 .NET 连接器从 C# 应用程序发送数据。它工作正常,所以我可以将数据(即行)插入服务器或删除它们。

服务器是否可以从我的 C# 应用程序加载数据并将其插入数据库?我会在数据库中使用触发事件并定期从 C# 应用程序加载新数据。

如果有可能,我想测试这两种方法的速度。有人知道答案吗?

【问题讨论】:

  • 好吧,在这种情况下,您的 C# 应用程序应该以某种方式处理处理程序网络请求并对其进行响应,因此它实际上成为“服务器”,而 mysql 服务器成为发送请求和接收响应的“客户端”。虽然这通常是可能的 - 但实施起来并不简单,事实上,这个问题太宽泛了,无法以 StackOverflow 问答形式讨论。
  • 如果您觉得有用,请记得回来投票+接受答案。它可以帮助您、那些试图回答您问题的人以及整个社区。​​span>
  • 如果您发布您现在执行方式的完整代码,我很乐意向您展示将吞吐量提高 10 倍的具体方法。

标签: c# mysql .net database-connection


【解决方案1】:

据我了解您的问题,答案是否定的。从它的角度来看,数据库服务器不会“连接”到您的应用程序以“加载”/“下载”数据。您的应用程序必须使用有效的 SQL 查询插入数据。如果你想安排一些事情,你需要在你的应用程序(例如循环计时器)或操作系统级别(例如 Windows 服务或 Linux cronjob)中安排计划,以便程序处理它。

但是,如果您尝试将数据从一个数据库移动到另一个数据库(例如迁移),那么您可以将架构转储到一个文件中,然后要求另一个数据库从该数据转储中“恢复”,就像您正在从某种备份中恢复。 注意: 如果您这样做,您将替换而不是更新现有数据。

请注意,转储基本上包含 SQL 语句,其他 DB 将执行这些语句以创建表、约束、数据行等。

【讨论】:

  • 好的,谢谢。所以我无论如何都要使用另一个文件来缓冲数据?
  • 视情况而定。如果您创建一个数据转储,那么它将被放置到一个文件中。如果您的应用程序在移动数据,那么它可以简单地将数据从某个连接select 发送到Database-A,然后使用第二个连接将insert 发送到某个Database-B,从而避免将文件写入磁盘。
  • 有一个权衡。应用程序可以避免您必须手动使用 MySQL 命令(例如mysqldump 等)、在服务器之间传输文件、然后启动恢复操作的开销,因此从这个意义上说它可能“更快”。 OTOH,从转储中恢复可能会更快,因为数据现在位于服务器本地,并且不需要每次都通过网络以块的形式传输,因此一旦启动它可能会更快。这里有很多因素,包括网络、HDD 速度等。您应该先从哪个更容易开始,然后然后决定是否需要更多。
猜你喜欢
  • 2015-10-19
  • 1970-01-01
  • 2017-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多