【问题标题】:'using' on mysql connection在mysql连接上“使用”
【发布时间】:2015-10-28 22:04:41
【问题描述】:

我正在使用 mysql 在 c# 中的登录服务器上工作,我有一个问题: 我在互联网上看到使用 MySqlConnection 和进行查询的正确方法是使用这样的“使用”语句:

using (SqlConnection con = new SqlConnection(CNN_STRING))
{
    using (SqlCommand cmd = new SqlCommand("COMMAND", con))
    {
        //do something
    }
}

好吧,如果我使用它,每次连接都会关闭和打开,对吗?问题是打开连接大约需要 200 毫秒,每次我尝试进行查询时都需要这个时间吗?

【问题讨论】:

  • 您通常只需打开一次,然后执行所有查询。无需多次打开。
  • "using" 是处理实现IDisposable的对象的正确方法。
  • @Bxx 否 - 连接在 .NET 中汇集,因此创建一个不是一个昂贵的过程。但是,长时间保持连接打开可能会导致问题。

标签: c# mysql


【解决方案1】:

好吧,如果我使用它,每次连接都会关闭和打开,对吗?

它会自动关闭。您仍然需要在使用前打开它。

问题是打开连接大约需要200毫秒,每次我尝试进行查询时都会花费这个时间吗?

您必须尝试并测量它才能确定,但​​连接是在 .NET 中汇集的,因此创建一个并不是一个昂贵的过程。 打开是否每次都花费相同的时间,如果不尝试就无法确定,因为这取决于您的网络质量。

尝试推荐的方法,如果它成为整个应用程序的可衡量问题然后寻找其他解决方案。

不要在应用程序的生命周期内保持连接打开的另一端。如果你这样做了,那么你必须经常检查以确保连接仍然打开(因为它可以通过其他方式关闭)并且可能导致其他问题。

【讨论】:

  • 点赞。最后一段 - 同上。我受够了我们的代码——所有的OpenCloseings,尤其是在使用using 时。
  • 更不用说...orphaned connections.
【解决方案2】:

不!只需确保您使用的逻辑在该 using 块内。它将被正确连接和处理。

【讨论】:

  • 这不是答案,using 负责自动处理
【解决方案3】:

这应该会打开您的连接并在 using 块的末尾正确处理它。

using (SqlConnection con = new SqlConnection(CNN_STRING))
{
    SqlCommand cmd = new SqlCommand("COMMAND, con);
    //do something
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 2016-07-11
    • 2014-07-04
    • 2012-04-03
    相关资源
    最近更新 更多