茶亦醉人何必酒,书能香我无须花!

张帆风顺破重浪,兰幽山间心坦荡。 斌礼厚徳创伟业,志壮凌云走四方!
posts - 169, comments - 560, trackbacks - 8, articles - 4
  博客园 :: 首页 ::  :: 联系 :: 订阅 订阅 :: 管理

 编码过程中使用SqlDataReader 来操作数据库时,你是否每次在调用完你的数据库方法后,再手动调用方法或写代码关闭数据库联接呢?(呵呵 我以前是这样做的 见笑)
下面的方法可以完成解决此问题了,cmd.ExecuteReader的参数CommandBehavior.CloseConnection会自动帮你关闭与之相关联的conn

 public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) 
      
{

            SqlCommand cmd 
= new SqlCommand();

            SqlConnection conn 
= new SqlConnection(connectionString);

          
try
            
{

                PrepareCommand(cmd, conn, 
null, cmdType, cmdText, commandParameters);

                   
// 给cmd.ExecuteReader加上参数CommandBehavior.CloseConnection会在cmd.ExecuteReader执行完后自动关闭与之相关联的conn
                SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

                

                cmd.Parameters.Clear();

                
return rdr;

            }


            
catch 
            
{

                conn.Close();

                
throw;

            }


       }

Feedback

#1楼  回复 引用 查看   

2006-12-19 17:59 by Anders Cui      
应该是
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);吧?

#2楼  回复 引用   

2006-12-19 19:16 by ekinwt[未注册用户]
呵呵,现在都很少写这些数据访问的东东。。。不过我觉得还是自己手动的关闭会好一些。。。方便是方便,还是要养成好习惯。。。

#3楼  回复 引用   

2006-12-20 16:14 by 丁沣[未注册用户]
是个好方法,支持

#4楼  回复 引用 查看   

2007-03-25 21:59 by JesseZhao      
方法不错

#5楼  回复 引用   

2007-11-09 12:47 by hydra1983[未注册用户]
CommandBehavior.CloseConnection
应该是关闭SqlDataReader的时候关闭与之相联系的SqlConnection吧?
所以应该是reader.Close(),然后conn.Close()会自动调用

#6楼  回复 引用 查看   

2010-05-15 16:29 by jianshaohui      
CommandBehavior.CloseConnection
应该是关闭SqlDataReader的时候关闭与之相联系的SqlConnection吧?
所以应该是reader.Close(),然后conn.Close()会自动调用

#7楼  回复 引用 查看   

2010-06-11 18:19 by ajian24      
CommandBehavior.CloseConnection 能不能用于DataSet
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 597039 AIxyMJZudao=