标题:SqlConnection 和 SqlCommand 放在 try{} 外面 有什么好处???
只看楼主
郝江坤
Rank: 2
等 级:论坛游民
帖 子:25
专家分:10
注 册:2011-10-20
结帖率:40%
 问题点数:0 回复次数:3 
SqlConnection 和 SqlCommand 放在 try{} 外面 有什么好处???
public class GradeService
    {
        public List<Grade> GetAllGrade()
        {
            List<Grade>  gradeList =new List<Grade>();
            SqlConnection sqlConn = null;
            SqlCommand sqlComm = null;
            try
            {
                string sql = string.Format("SELECT * FROM Grade");
                sqlConn = DBHelper.GetSqlConn();
                sqlComm = new SqlCommand(sql,sqlConn);
                SqlDataReader sqlDR = sqlComm.ExecuteReader();
                while(sqlDR.Read())
                {
                    Grade grade = new Grade();
                    grade.GradeId =Convert.ToInt32(sqlDR["GradeID"].ToString());
                    grade.GradeName = sqlDR["GradeName"].ToString();

                    gradeList.Add(grade);

                }
                return gradeList;
            }
            catch (Exception ex)
            {
                throw ex;
            }
           finally
            {
                sqlConn.Close();
            }
        }
    }
搜索更多相关主题的帖子: sql class public null 
2012-03-15 10:59
smart0721
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:106
专家分:468
注 册:2012-2-10
得分:0 
这就涉及变量的作用域问题,在 try{}里面定义的话,那只在在 try{} 里起作用,在下面 finally{}中的sqlConn 就找不到了,需要重新定义
放在外面定义的话,在整个GetAllGrade()能起作用
不过放在外面定义的话,它相对会占用更多的内存,所以要尽可能的使用局部变量来代替全局变量或者外部变量
所以要看你具体的程序设计来决定在该变量在哪里定义比较好



[ 本帖最后由 smart0721 于 2012-3-15 12:12 编辑 ]
2012-03-15 12:05
郝江坤
Rank: 2
等 级:论坛游民
帖 子:25
专家分:10
注 册:2011-10-20
得分:0 
回复 2楼 smart0721
明白了   谢啦  
2012-03-15 12:39
zhp223
Rank: 5Rank: 5
等 级:职业侠客
帖 子:99
专家分:362
注 册:2010-3-21
得分:0 
这个涉及到异常处理与非托管资源释放的问题,如果定义在try里面,出现异常的时候就调用不了非托管资源释放的代码(xxx.Close()、xxx.Dispose()等),
所以涉及到有非托管资源的代码时一般都要像LZ这样写

日有所思,夜有所梦
2012-03-18 15:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-363234-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.307727 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved