Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 连接字符串对象的最佳实践_C#_Object_Ado.net_Database Connection - Fatal编程技术网

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

C# 连接字符串对象的最佳实践,c#,object,ado.net,database-connection,C#,Object,Ado.net,Database Connection,在我的应用程序中,我有两个方法,用于调用两个不同的SP public List<Products> GetProducts(string productName, string productCode) { SqlConnection sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["CatalogueConnectionString"].ConnectionString); SqlCo

在我的应用程序中,我有两个
方法
,用于调用两个不同的
SP

public List<Products> GetProducts(string productName, string productCode)
{
   SqlConnection sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["CatalogueConnectionString"].ConnectionString);
   SqlCommand cmd = new SqlCommand("usp_Get_Products", sqlconn);
   .....
}
公共列表GetProducts(string productName、string productCode)
{
SqlConnection sqlconn=新的SqlConnection(ConfigurationManager.ConnectionString[“CatalogeConnectionString”].ConnectionString);
SqlCommand cmd=新的SqlCommand(“usp\U Get\U Products”,sqlconn);
.....
}

我在同一个类中还有另一个方法,它再次创建
SqlConnection
对象。所以我的问题是,创建
连接
对象的最佳实践应该是什么,这样我就不必在每种方法中一次又一次地创建它。为每个方法创建连接对象是一种好的做法吗?

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

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);
   .....
}
公共列表GetProducts(string productName、string productCode)
{
SqlConnection sqlconn=新的SqlConnection(MyCachedSettings.ConnectionString);
SqlCommand cmd=新的SqlCommand(“usp\U Get\U Products”,sqlconn);
.....
}

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

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);
   .....
}
公共列表GetProducts(string productName、string productCode)
{
SqlConnection sqlconn=新的SqlConnection(MyCachedSettings.ConnectionString);
SqlCommand cmd=新的SqlCommand(“usp\U Get\U Products”,sqlconn);
.....
}

您应该创建一些类或方法来处理如何对db执行命令。在本例中,我使用static来允许所有人使用它,而无需重新创建新实例。ParamsInfo是存储param对象的名称和值的DTO类

让它为你处理一切


您应该创建一些类或方法来处理如何对db执行命令。在本例中,我使用static来允许所有人使用它,而无需重新创建新实例。ParamsInfo是存储param对象的名称和值的DTO类

让它为你处理一切

公共列表GetProducts(SqlConnection sqlconn、string productName、string productCode)
{
SqlCommand cmd=新的SqlCommand(“usp\U Get\U Products”,sqlconn);
}
SqlConnection sqlconn=新的SqlConnection(“”);
sqlconn.Open();
GetProducts(sqlconn、“产品名称”、“代码”);
GetProducts1(sqlconn,“产品名称”,“代码”);
sqlconn.Close();
公共列表GetProducts(SqlConnection sqlconn、string productName、string productCode)
{
SqlCommand cmd=新的SqlCommand(“usp\U Get\U Products”,sqlconn);
}
SqlConnection sqlconn=新的SqlConnection(“”);
sqlconn.Open();
GetProducts(sqlconn、“产品名称”、“代码”);
GetProducts1(sqlconn,“产品名称”,“代码”);
sqlconn.Close();

是否每次都必须创建
SqlConnection
对象?如果我有5种不同的方法,我必须创建这个对象5次?不,你没有。您可以创建一个连接并重新使用它。。。。只需确保不要跨线程重复使用它。我将修改上面的示例是否每次都必须创建
SqlConnection
对象?如果我有5种不同的方法,我必须创建这个对象5次?不,你没有。您可以创建一个连接并重新使用它。。。。只需确保不要跨线程重复使用它。我将修改上面的示例