如何使用asp.net中的Using语句创建SQLConnection,再从中调用SQLDataReader实现数据库操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计527个文字,预计阅读时间需要3分钟。
为了确保代码的简洁性和易读性,以下是对给定内容的简写和
确保使用最佳方法从数据库中获取数据,是否应在`using`语句外调用`datareader`?为了更快地关闭连接,是否应该在外部使用`using`?或者,有人有其他改进建议吗?
csharpEnsure optimal data retrieval from the database. Should `datareader` be called outside the `using` statement? For faster connection closure, use `using` externally? Any other improvements?
只是想确保这是调用连接,从数据库中获取数据的最佳方法,还是应该如何在using语句之外调用datareader? (为了更快地关闭连接?)或者你有什么个人改变吗?using (SqlConnection cn = new SqlConnection(connStr)) { using (SqlCommand cm = new SqlCommand(connStr, cn)) { cm.CommandType = CommandType.StoredProcedure; cm.CommandText = "GetExchRatesByDate"; cm.Parameters.Add("@Date", SqlDbType.VarChar).Value = txtStartDate.Text; cn.Open(); SqlDataReader dr = cm.ExecuteReader(); while (dr.Read()) { firstName = (string)dr["GivenName"]; lastName = (string)dr["sn"];; } dr.Close(); } } 您无法在using语句之外成功调用datareader,因为它需要打开连接才能读取数据.
连接将以你拥有的方式足够快地关闭,甚至不会真正“关闭”.它将返回到连接池(假设您使用的是连接池).由于您可能是这样,因此您无需担心连接在此上下文中关闭的速度,因为需要连接的应用程序的其他部分将从池中获取可用的连接.这假设您没有真正高流量的应用程序,它可能在这种情况下变得很重要,但这是很多很多很多并发用户,您可以通过增加池中的连接数来缓解这个问题.
克里斯提出了一个很好的观点:它应该在一个使用声明中:
SqlDataReader dr = cm.ExecuteReader(); while (dr.Read()) { firstName = (string)dr["GivenName"]; lastName = (string)dr["sn"];; } dr.Close();
在这种情况下,如果您的读者抛出异常,它将永远不会到达dr.Close();所以它会比它需要的时间长得多(甚至可能在应用程序的生命周期中).
Data Reader
本文共计527个文字,预计阅读时间需要3分钟。
为了确保代码的简洁性和易读性,以下是对给定内容的简写和
确保使用最佳方法从数据库中获取数据,是否应在`using`语句外调用`datareader`?为了更快地关闭连接,是否应该在外部使用`using`?或者,有人有其他改进建议吗?
csharpEnsure optimal data retrieval from the database. Should `datareader` be called outside the `using` statement? For faster connection closure, use `using` externally? Any other improvements?
只是想确保这是调用连接,从数据库中获取数据的最佳方法,还是应该如何在using语句之外调用datareader? (为了更快地关闭连接?)或者你有什么个人改变吗?using (SqlConnection cn = new SqlConnection(connStr)) { using (SqlCommand cm = new SqlCommand(connStr, cn)) { cm.CommandType = CommandType.StoredProcedure; cm.CommandText = "GetExchRatesByDate"; cm.Parameters.Add("@Date", SqlDbType.VarChar).Value = txtStartDate.Text; cn.Open(); SqlDataReader dr = cm.ExecuteReader(); while (dr.Read()) { firstName = (string)dr["GivenName"]; lastName = (string)dr["sn"];; } dr.Close(); } } 您无法在using语句之外成功调用datareader,因为它需要打开连接才能读取数据.
连接将以你拥有的方式足够快地关闭,甚至不会真正“关闭”.它将返回到连接池(假设您使用的是连接池).由于您可能是这样,因此您无需担心连接在此上下文中关闭的速度,因为需要连接的应用程序的其他部分将从池中获取可用的连接.这假设您没有真正高流量的应用程序,它可能在这种情况下变得很重要,但这是很多很多很多并发用户,您可以通过增加池中的连接数来缓解这个问题.
克里斯提出了一个很好的观点:它应该在一个使用声明中:
SqlDataReader dr = cm.ExecuteReader(); while (dr.Read()) { firstName = (string)dr["GivenName"]; lastName = (string)dr["sn"];; } dr.Close();
在这种情况下,如果您的读者抛出异常,它将永远不会到达dr.Close();所以它会比它需要的时间长得多(甚至可能在应用程序的生命周期中).
Data Reader

