【问题标题】:Determine which connection to use确定要使用的连接
【发布时间】:2013-03-12 04:20:44
【问题描述】:

在我的代码中,如果我有多个连接字符串,如何在不创建另一个 ExecuteNonQuery() 共享函数的情况下因为多个连接而实现呢?我正在考虑使用 if else 来确定类函数调用 ExecuteNonQuery() 是否应该使用特定的连接字符串来打开/关闭连接,我想重用 ExecuteNonQuery() 曾经有不同的连接,有更好的主意吗?或者如果设计是错误的?

public void OpenConnection()
{
    try
    {
        string strSQLSvr = ConfigurationManager.ConnectionStrings["SQLConnStr"].ConnectionString;
        string strUsrSvr = ConfigurationManager.ConnectionStrings["usrMaint"].ConnectionString;

        conn = new SqlConnection(strSQLSvr);
        conn.Open();
    }
    catch (Exception ex)
    {
    }
}

public void CloseConnection()
{
    try {
        if (conn.State == ConnectionState.Open)
        {
            conn.Close();
        }
    }
    catch (Exception ex)
    {

    }

public void ExecuteNonQuery(string strSQL)
{
    try
    {
        OpenConnection();
        cmd.CommandText = strSQL;
        cmd.Connection = conn;
        cmd.ExecuteNonQuery();
    }
    catch (Exception ex)
    {

    }
    finally
    {
        CloseConnection();
    }
}

【问题讨论】:

  • 我在你的代码中只看到一个连接...
  • 是的,您的代码中只有一个连接,而另一个连接..
  • 使用using 声明。您应该必须避免粗略的代码设计。
  • 是的,我放的代码只有1个连接字符串,我想再添加一个连接,怎么做?由于该函数由不同的类使用,我确实研究了“使用”,但仍然不知道如何重用我的 ExecuteNonQuery()?任何想法的代码示例?

标签: c#


【解决方案1】:

你可以使用下面的设计

public class DatabaseConnection 
{

    private static DbConnection createSQlConnectionWithDB1()
    {
        // create a connection with DB1

        return new SqlConnection();
    }

    private static DbConnection createSQlConnectionWithDB2()
    {
       // create a connection with DB2
        return new SqlConnection();
    }


    public  static DbConnection createConnection(string typeOfConnection)
    {
        if (typeOfConnection.Equals("DB1"))
            return createSQlConnectionWithDB1();

        if (typeOfConnection.Equals("DB2"))
            return createSQlConnectionWithDB2();

        return null;
    }
}

【讨论】:

  • 那么意思是,我需要在不同的类中传入连接类型?
  • 是的,你需要通过,它只是从班级承担责任并委托它。
【解决方案2】:

您可以根据连接字符串的变化,在OpenConnection() 函数中创建不同的连接对象。

然后,您可以简单地将连接对象传递给ExecuteNonQuery 函数。

这样就可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-21
    • 2014-07-12
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多