Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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
Asp.net 类上的数据库连接_Asp.net_Sql_Sql Server_Database - Fatal编程技术网

Asp.net 类上的数据库连接

Asp.net 类上的数据库连接,asp.net,sql,sql-server,database,Asp.net,Sql,Sql Server,Database,我正在为学校做一个项目,在那里我必须使用asp.net和sql数据库 我想知道我是否可以用这个 SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionNameWhateverItIs"].ConnectionString); SqlCommand command = new SqlCommand("functionName", connection); com

我正在为学校做一个项目,在那里我必须使用asp.net和sql数据库

我想知道我是否可以用这个

SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionNameWhateverItIs"].ConnectionString);

SqlCommand command = new SqlCommand("functionName", connection);
command.CommandType = CommandType.StoredProcedure;

SqlParameter Parameters = command.CreateParameter();

//parameters
//parameters

connection.Open();
command.ExecuteNonQuery();
connection.Close();
在许多具有不同参数的函数中,只需调用一次即可。就像在数据库上始终保持用户连接一样

这是否会减慢用户的导航速度


我想做的对吗?

你当然可以用不同的参数重复使用相同的代码,这里有一种方法

public void RunMyFunction(IDictionary<string, object> parameters)
{
    using (SqlConnection con = new SqlConnection(...))
    using (SqlCommand cmd = new SqlCommand("functionName", conn))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddRange(parameters.Select(x => new SqlParameter(x.Key, x.Value)));
        cmd.ExecuteNonQuery();
    }
}
...
RunMyFunction(
    new Dictionary<string, object>(2)
    {
        { "@param1", "value1" },
        { "@param2", "value2" },
    }
);
RunMyFunction(
    new Dictionary<string, object>(2)
    {
        { "@param1", "value3" },
        { "@param2", "value4" },
    }
);

但是,在许多具有不同参数的函数中,不幸的是,仅调用一次是不可能的。

是的,您可以重新使用db连接

保持连接开放以便重复使用与每次重新建立连接将取决于您的应用程序

对于大量同时使用的用户,在每次需要访问数据库时重新建立连接可能是一个好主意,因为保持多个连接处于打开状态,而实际上什么都不做,可能会导致应用程序消耗比必须消耗的资源更多的资源

如果您正在进行大量的数据库访问,保持连接打开并重新使用它可能是一个好主意


你必须根据你正在做的事情找到/决定一个平衡点。。。就我个人而言,每当我需要访问应用程序中的数据库时,总是实例化一个新连接。。。但我将在同一堆栈中聚集某些函数,以便在有意义的情况下使用相同的连接对象

我宁愿只打开一个到数据库的连接来响应用户的每个请求,而不是在每个函数中打开和关闭连接


您应该在响应结束时关闭连接,因为您永远不知道用户是否会有下一个请求。

您必须根据您正在做的事情找到/决定一个平衡点。。。就我个人而言,当我需要访问应用程序中的数据库时,总是实例化一个新连接。。。但我会将某些函数聚集在同一堆栈中,使用相同的连接对象,如果这样做有意义的话……这就是我一直在寻找的答案!不幸的是,我不能投票支持你的答案,因为我没有足够的声望点数。谢谢!即使我不能+1,你也能从我这里得到一个!