关于打开方法的操作(MySQL,Connector / Net)

时间:2018-08-06 05:13:38

标签: c# mysql

首先,我从6个月前开始学习C#,而且我不会说英语。 因此,对不起您说不明白的话。

现在,我正在使用C#开发仅连接到MySQL服务器(远程和本地)的应用程序。 我使用了MySql.Data.Client程序包,它是version 8.0.12. 这仅表示“我不发送任何查询。我想发现我可以使用用户名和密码连接到服务器。”

然后,我编写了这段代码。我有两个问题,我想得到任何建议。

sendCommand = string.Format("host={0}; userid={1}; password={2}; SslMode=none;", pIPAddress.ToString(), mOption1, mOption2);

MySqlConnection mysqlConnention = new MySqlConnection(sendCommand);
mysqlConnention.Open(); 

if (mysqlConnention.State.ToString() == "Open")
{
      result = true;
}

mysqlConnention.Close();

第一季度 应用程序不应将不必要的数据包发送到服务器。 但是我是从WireShark中找到它的,它是“显示变量”命令。 我试图更改一些有关ConnectionString的属性(在此代码中,它称为“发送命令”),因为我不想发送“显示变量”命令。 (例如,ChacheServerProperties = true,AllowBatch = false等)。

我可以不使用“显示变量”命令进行连接吗?

第二季度 (很喜欢,但我找不到原因) 当我开始开发此应用程序时,我使用了MySql.Data.Client 8.0.11。 但是那段时间,MySqlConnection.Open方法花了很长时间才能连接到服务器。(大约7到10秒。)

网络问题不存在,而且我能够使用cmd.exe进行连接很长时间(没有花一秒钟的时间)。 我尝试了任何模式,更改了服务器以进行连接,重新启动了OS(应用程序端和服务器端),更改了ConnectionString属性)。 MySQL服务器没有死机,看起来原因不在MySQL服务器和网络中。(从服务器获取应用程序“ ServerGreeting”数据包虽然没有时间,但是下一步是应用程序向服务器发送“ LoginRequest”数据包的时间很长了) )

但是我无法解决这个问题。但是我将MySql.Data.Client版本升级到8.0.12,所以我可以提出建议! 这是由MySql.Data.Client 8.0.11引起的吗? 我有什么解决办法吗?

1 个答案:

答案 0 :(得分:0)

  

应用程序不应将不必要的数据包发送到服务器。 …我可以不使用“显示变量”命令进行连接吗?

您可以通过使用备用ADO.NET库:MySqlConnector。打开连接时,它发送的数据包要少得多(但可能不会发送绝对的最小值)。

  

但是在那个时候,MySqlConnection.Open方法花了很长时间才能连接到服务器。(大约7〜10秒。)…这是MySql.Data.Client 8.0.11引起的吗?

这听起来很像MySQL bug 80030,这是8.0.11中的错误。该案例表明它将在8.0.13中修复,而不是在8.0.12中修复,但也许Oracle在发表评论后更改了其发布计划。

这也可以通过使用MySqlConnector来解决,后者从未使用过会导致MySql.Data中性能问题的低效率WMI查询。