我正在为学校开展项目,我必须使用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();
在许多具有不同参数的函数中,只需调用一次。就像维护用户一直在数据库上连接一样。
这会减慢用户的导航速度吗?
我正在尝试做什么?
答案 0 :(得分:0)
您当然可以重复使用具有不同参数的相同代码,这是实现此目的的一种方式
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" },
}
);
然而,&#34; 在许多具有不同参数的功能中,仅仅通过调用一次 &#34;,遗憾的是,这是不可能的。
答案 1 :(得分:0)
是的,您可以重新使用数据库连接。
保持连接打开以重复使用而不是每次都重新建立连接取决于您的应用程序。
对于大量并发用户而言,每次需要访问数据库时重新建立连接可能是个好主意,因为保持多个连接打开,而不是真正做任何事情,可能会导致应用程序消耗更多资源而不是。
如果您正在进行大量重型数据库访问,那么保持连接打开并重新使用它可能是一个好主意......
你必须根据你正在做的事情找到/决定一个平衡...我个人,每当我需要在我的应用程序中访问数据库时,总是实例化一个新的连接...但我会聚集某些函数相同的堆栈,如果有意义的话,使用相同的连接对象......
答案 2 :(得分:0)
我不想在每个函数中打开和关闭连接,而是只打开一个与数据库的连接来响应用户的每个请求。
您应该在响应结束时关闭连接,因为您永远不知道用户是否会有下一个请求。