c# - 正确使用与 C# 和 MySQL 的连接

标签 c# mysql

C#/MySQL 交互的典型示例涉及如下代码(为简单起见,我跳过了 try/catches 和错误检查):

conn = new MySqlConnection(cs);
conn.Open();
string stm = "SELECT * FROM Authors";
MySqlCommand cmd = new MySqlCommand(stm, conn);
rdr = cmd.ExecuteReader();

该方案是一个用于独立应用程序和 WCF Web 服务的类库。那么,我是否应该在每次查询时都打开一个连接?还是应该在打开程序的时候打开一次?

最佳答案

要扩展 HackedByChinese 的建议,请考虑以下内容。您有一个主要的协调方法来处理连接的创建、打开、设置事务,然后调用执行不同类型工作(查询)的辅助方法。

  public static void UpdateMyObject(string connection, object myobject)
        {
        try
        {
            using (SqlConnection con = new SqlConnection(connection))
            {
                con.Open();
                using (SqlTransaction trans = con.BeginTransaction())
                {
                    WorkingMethod1(con, myobject);
                    WorkingMethod2(con, myobject);
                    WorkingMethod3(con, myobject);
                    trans.Commit();
                }
                con.Close();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("SOMETHING BAD HAPPENED!!!!!!!  {0}", ex.Message);
        }
    }

    private static void WorkingMethod1(SqlConnection con, object myobject)
    {
        // Do something here against the database
    }

    private static void WorkingMethod2(SqlConnection con, object myobject)
    {
        // Do something here against the database
    }

    private static void WorkingMethod3(SqlConnection con, object myobject)
    {
        // Do something here against the database
    }

关于c# - 正确使用与 C# 和 MySQL 的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10675102/

相关文章:

PHP/MySQL 多维/关联数组 3 试算表

Mysql如何查找表是否存在碎片

c# - 为什么我需要在程序逻辑中枚举我的列表才能在这种情况下工作?

c# - linq 语句返回什么样的对象?

c# - 等待一个漫长的过程,还在更新UI

mysql - Struts 2 FreeMarker 模板错误 stack.findValue ('top' ) 未定义且 jsp 页面

mysql - 是否在列上添加索引?

c# - Delphi Pipes.PAS 与 .NET 命名管道不兼容?

c# - 删除与 IDictionary 中的条件匹配的所有项目

MYSQL - 选择两个表之间的唯一公共(public)列 - 最有效的查询