黑马程序员技术交流社区

标题: SqlDataReader的问题 [打印本页]

作者: 许王斌    时间: 2012-10-23 16:11
标题: SqlDataReader的问题
本帖最后由 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);的作用是干什么?
复制代码

作者: 冯纪纲    时间: 2012-10-23 16:48
//一般情况下获取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对象关闭时自动关闭。
作者: 许王斌    时间: 2012-10-23 17:38
多谢指点




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2