首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于try finally的有关问题

2012-05-06 
关于try finally的问题C# codepublic static SqlConnection CreateCon(){SqlConnection con new SqlConn

关于try finally的问题

C# code
public static SqlConnection CreateCon()        {                        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);            return con;        }public static SqlDataReader getRow(string sql)        {            SqlConnection con = CreateCon();            try            {                con.Open();                SqlCommand com = new SqlCommand(sql, con);                SqlDataReader sdr = com.ExecuteReader();                return sdr;            }            catch (Exception ex)            {                Logs.FileLog( sql + " | " + ex);                throw;            }            finally            {                con.Close();                con.Dispose();            }        }


请问的代码这样写有问题吗? finally里的关闭连接会每次都执行吗? 在做测试的时候数据连接会不断增加,导致系统挂掉了

[解决办法]
1. 写dispose就根本用不着写close,那是画蛇添足的。
2. 写using(){ } 结构语法就行了,用不着写try..finally。那也是让你的代码臃肿而累赘的。
3. 连接池是高效利用连接的手段,不是每次都及时关闭连接,会使得系统根本经不起并发使用。

至于你说的“系统挂掉了”,应该去测试出真正的原因。不要随便按一个罪名。
[解决办法]
 
代码全部错误。

静态 SqlConnection 就是大问题。

ExecuteReader 也用错了,没有设置为关闭阅读器自动关闭数据库连接。

设置以后调用这个方法的地方,负责关闭Reader就可以了,SqlConnection 会自动关闭的。

热点排行