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

这种"using"打开数据库的方法,没见它关闭数据库,这样做好吗?该怎么解决

2012-02-27 
这种using打开数据库的方法,没见它关闭数据库,这样做好吗?using(SqlConnectionconnnewSqlConnection(sC

这种"using"打开数据库的方法,没见它关闭数据库,这样做好吗?
using   (SqlConnection   conn   =   new   SqlConnection(sConnectionString))
        {
                conn.Open();
                using   (SqlCommand   cmd   =   new   SqlCommand( "insert   into   tbUser   (UserID,   UserName,
                UserPassword,UserEmail,UserGender,UserIsMarried,UserFace)   values   (@UserID,  
                @UserName,@UserPassword,@UserEmail,@UserGender,@UserIsMarried,@UserFace) ",   conn))
                {
                        cmd.Parameters.AddWithValue( "@UserID ",   sUserID);
                        cmd.Parameters.AddWithValue( "@UserName ",   sUserName);
                        cmd.Parameters.AddWithValue( "@UserPassword ",   tb_Password1.Text);
                        cmd.Parameters.AddWithValue( "@UserEmail ",   tb_UserEmail.Text);
                        cmd.Parameters.AddWithValue( "@UserGender ",   rbl_UserGender.SelectedValue);
                        cmd.Parameters.AddWithValue( "@UserIsMarried ",   cb_UserIsMarried.Checked);
                        cmd.Parameters.AddWithValue( "@UserFace ",   ddl_UserFace.SelectedValue);
                        cmd.ExecuteNonQuery();
                }
        }


[解决办法]
using是Dispose,会销毁链接对象的
ASP.NET中不建议用using,最好调用.Close方法使其释放回连接池,以便复用~
[解决办法]
SqlConnection 实现了 派生至 DbConnection 实现了 又实现了

IDisposable 接口

而 Dispose 方法内部调用了Close方法
所以使用 using 后会自动关闭 并释放资源
[解决办法]
using 的对象必须实现 IDisposeabe 接口
[解决办法]
用ilasm看看,using已经自动被展开为try{}finally了,并在finally中调用了Dispose方法。using只是对你隐藏了,减少了代码写作量而已,并不是没有调用关闭数据库连接。

热点排行