呵呵,基本肯定是我的理解有误,他高级讲师基本不可能在这犯错!!
我的理解是: 用using语句块 每次都会执行 con.Database(), 这么写就没有连接池的概念了吧?每次都得重新new 一个SqlConnection 连接数据库,有效率太低了吧? 我的理解是 Database()方法 是完全释放资源啊 Close()方法才是暂时关闭连接吧?我以前都是把 SqlConnection 当做一个类的字段来处理的 用完了Close()一下而已
1 class SqlHelper
2 {
3 private static readonly string connstr = ConfigurationManager.ConnectionStrings["lkfCon"].ConnectionString;
4
5 public int ExecuteNonQuery(string cmdText, params SqlParameter[] parameters)
6 {
7 using (SqlConnection con = new SqlConnection(connstr))
8 {
9 con.Open();
10 using (SqlCommand cmd = con.CreateCommand())
11 {
12 cmd.CommandText = cmdText;
13 cmd.Parameters.AddRange(parameters);
14 return cmd.ExecuteNonQuery();
15 }
16 }
17 }
18 }
8 回答
DIEA
TA贡献1820条经验 获得超2个赞
首先你的问题就不对,实现了 IDisposable接口的类都可以用using语句块,以便自动调用该对象的Dispose()方法,来释放该对象。这样写的确是没有了连接池的概念,但也并不能因此说这样效率低,微软提供的SqlHelper都是这么写的,这样写在数据量不是特别大的情况下反而效果很好。
小唯快跑啊
TA贡献1863条经验 获得超2个赞
一般情况下,我是使用单例模式来使用SQLConnection。。。。
private static SqlConnection _conn = null;
/// <summary>
/// 定义一个linq对象实例
/// </summary>
public static SqlConnection GetConn
{
get
{
if(_conn ==null)
{
_conn =new Sqlconnection(connstr );
}
return _conn ;
}
- 8 回答
- 0 关注
- 657 浏览
添加回答
举报
0/150
提交
取消