这种"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只是对你隐藏了,减少了代码写作量而已,并不是没有调用关闭数据库连接。