A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 许王斌 中级黑马   /  2012-10-23 16:11  /  1764 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 sxycxwb 于 2012-10-23 16:22 编辑
  1.             conn = new SqlConnection(connStr);
  2.             SqlCommand cmd = new SqlCommand(strSelectCmd, conn);
  3.             cmd.Parameters.AddRange(paras);
  4.             conn.Open();
  5.             SqlDataReader dr = cmd.EndExecuteReader(CommandBehavior.CloseConnection);
  6.             return dr;




  7. SqlDataReader dr = cmd.EndExecuteReader(CommandBehavior.CloseConnection);的作用是干什么?
复制代码

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

2 个回复

倒序浏览
//一般情况下获取SqlDataReader方法

static SqlDataReader GetReader()

{

//通过连接字符串获取连接

SqlConnection con = new SqlConnection(conn_string);

try

{
con.Open();//打开连接,执行查询

SqlCommand cmd = con.CreateCommand(conn,sql);//传入连接和SQL语句
return  cmd.ExecuteReader();//获得SqlDataReader,并返回
}

finally

{

//一般在这里做的是关闭连接的动作。

//如果这里执行关闭:con.Close();那返回的
//SqlDataReader将毫无用处,因为其依赖的连接已经关闭
//如果这里不执行con.Close();那返回后该连接
//将永远无法关闭,因为调用方无法得到连接对象
}

CommandBehavior.CloseConnection解决了流读取数据模式下,数据库连接不能有效关闭的情况。当某个SqlDataReader对象在生成时使用了CommandBehavior.CloseConnection,那数据库连接将在SqlDataReader对象关闭时自动关闭。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
多谢指点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马