黑马程序员技术交流社区
标题:
SqlDataReader的问题
[打印本页]
作者:
许王斌
时间:
2012-10-23 16:11
标题:
SqlDataReader的问题
本帖最后由 sxycxwb 于 2012-10-23 16:22 编辑
conn = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand(strSelectCmd, conn);
cmd.Parameters.AddRange(paras);
conn.Open();
SqlDataReader dr = cmd.EndExecuteReader(CommandBehavior.CloseConnection);
return dr;
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