连接字符串对象的最佳实践

时间:2016-01-19 06:43:26

标签: c# object ado.net database-connection

我的应用程序中有两个methods用于调用两个不同的SPs

public List<Products> GetProducts(string productName, string productCode)
{
   SqlConnection sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["CatalogueConnectionString"].ConnectionString);
   SqlCommand cmd = new SqlCommand("usp_Get_Products", sqlconn);
   .....
}

我在同一个类中也有另一个方法,它再次创建SqlConnection对象。所以我的问题是创建connection对象的最佳做法应该是什么,所以我不必在每种方法中一次又一次Create。为每个方法创建连接对象是一个好习惯吗?

3 个答案:

答案 0 :(得分:0)

我通常只有一个类似于此的全局静态变量:

public static class MyCachedSettings
{
     public static string ConnectionString = 
     ConfigurationManager.ConnectionStrings["CatalogueConnectionString" ].ConnectionString;

     public static SqlConnection Connection = new SqlConnection(ConnectionString);
}

然后使用它:

public List<Products> GetProducts(string productName, string productCode)
{
   SqlConnection sqlconn = new SqlConnection(MyCachedSettings.ConnectionString);
   SqlCommand cmd = new SqlCommand("usp_Get_Products", sqlconn);
   .....
}

答案 1 :(得分:0)

您应该创建一些类或方法来处理如何将命令执行到db。在这种情况下,我使用静态允许每个人使用它而无需重新创建新实例。 ParamsInfo是存储名称和param对象值的DTO类。

实施例

public static DataSet ExecuteDataSet(string connectionString, string storedProcedure, params ParamsInfo[] params)
{ ... }

让它为你处理一切。

See How to use DataSet

答案 2 :(得分:0)

public List<Products> GetProducts(SqlConnection sqlconn, string productName, string productCode)
{

SqlCommand cmd = new SqlCommand("usp_Get_Products", sqlconn);

}
SqlConnection sqlconn = new SqlConnection("");
sqlconn.Open();
GetProducts(sqlconn, "productName", "code");
GetProducts1(sqlconn, "productName", "code");
sqlconn.Close();