首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过MySQL管理C#连接的适当方法是什么?

问通过MySQL管理C#连接的适当方法是什么?
EN

Software Engineering用户
提问于 2012-11-16 13:50:03
回答 2查看 9K关注 0票数 1

我的问题是,什么是管理我们与MySQL db的C#连接的合适(最好的)方法。

嗯,目前我正在处理一些C# (WinForms类型) <-> MySQL应用程序,我一直在查看MySQL管理员中的服务器连接,见证了我的MySQL查询的执行,连接打开了一个关闭程序,……等等!在我的C#代码中,我是这样工作的,这就是一个例子:

代码语言:javascript
复制
public void InsertInto(string qs_insert)
{

     try
     {
          conn = new MySqlConnection(cs);
          conn.Open();

          cmd = new MySqlCommand();
          cmd.Connection = conn;
          cmd.CommandText = qs_insert;
          cmd.ExecuteNonQuery();

     }
     catch (MySqlException ex)
     {
         MessageBox.Show(ex.ToString());
     }
     finally
     {
         if (conn != null)
         {
            conn.Close();
         }
     }
}

这意味着,每当我想在db表中插入某些内容时,我都会调用这个表并将insert查询字符串传递给此方法。建立连接,打开连接,执行查询,关闭连接。因此,我们可以得出结论,这就是我管理MySQL连接的方式。

对于我和我的观点,目前,这是可行的,它足以满足我的要求。

您有Java & Hibernate、C# &,我正在这样做:-/,这让我很困惑。我应该在实体框架中使用MySQL吗?

C#和MySQL之间的最佳协作方式是什么?我不想担心的是,我打开的连接已经关闭,同样的连接会更快,.

EN

回答 2

Software Engineering用户

发布于 2012-11-16 13:59:45

我建议using

代码语言:javascript
复制
using(MySqlConnection conn = new MySqlConnetion(cs)
{
    conn.open();
    //setup and execute query

} //conn gets closed here

在这里,一旦退出using块,连接就会关闭。

票数 12
EN

Software Engineering用户

发布于 2012-11-16 17:10:09

规则是:尽可能晚开门。尽快接近。(实际上,您正在获取并放入连接池,但方法名称是打开/关闭的)。

您的代码片段是可以的,但是如果您想严格遵循规则,那么Open()就可以在ExecuteNonQuery()之前移动。

正如DFord所建议的,使用块在C#中是首选的。这是因为文体上的原因。这是一种基于范围的风格。您可以将资源(连接)处理得有点像普通的本地原语,如int、double等。当它们超出作用域时,一切都会自动清理。“使用”块由编译器转换为try/finally。

使用块是RAII的一个模拟。然而,这是一种模拟,而不是真实的东西。使用块是编写“尝试/捕捉”的一种语法糖。在真正的RAII中,您不必编写任何特殊的语法来获得堆栈pop效果,因为它是由文字堆栈控制的。RAII稍微安全一些,因为您不需要记住编写任何特殊的构造,如“使用”或“尝试”。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/176085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档