using (XX xx = ...) 的含义

主  题: using 什么时候用
作  者: overmind (overmind)
等  级:
信 誉 值: 96
所属社区: .NET技术 .NET Framework
问题点数: 20
回复次数: 3
发表时间: 2005-12-28 15:25:07
public AccountInfo SignIn(string userId, string password) { SqlParameter[] signOnParms = GetSignOnParameters(); signOnParms[0].Value = userId; signOnParms[1].Value = password; using (SqlDataReader rdr = SQLHelper.ExecuteReader(SQLHelper.CONN_STRING_NON_DTC, CommandType.Text, SQL_SELECT_ACCOUNT, signOnParms)) { ... } } 请问这里为什么要用using,一直不太明白这里用using的意思,请明白的您告诉我,谢谢!
回复人: ben_na(笨笨) ( ) 信誉:100 2005-12-28 16:41:00 得分: 0
 
有些资源,申请了,用完了,就要释放掉,比如文件打开后,要关闭, 数据库打开后,要关闭. 一般是这样 XX xx = null; try{ xx.Open(); } finally { if (xx != null) { xx.Dispose(); } } 其中Dispose()方法 是接口IDispose的方法. 你可以认为写上 using (XX xx = ...) { 这里尽情地用吧! } 它就像上面写的try finally一样..
Top
回复人: imxh(风轻扬) ( ) 信誉:100 2005-12-28 16:50:00 得分: 0
 

using() { } ()里声明的变量在{}语句体执行完后就将对象回收,优化内存资源管理

   using (SqlDataReader rdr = SQLHelper.ExecuteReader(SQLHelper.CONN_STRING_NON_DTC, CommandType.Text, SQL_SELECT_ACCOUNT, signOnParms)) {

   using (SqlConnection conn = new SqlConnection(SQLHelper.CONN_STRING_NON_DTC)) {
    conn.Open();
    using (SqlTransaction trans = conn.BeginTransaction()) {
     try {
      SQLHelper.ExecuteNonQuery(trans, CommandType.Text, SQL_INSERT_SIGNON, signOnParms);
      SQLHelper.ExecuteNonQuery(trans, CommandType.Text, SQL_INSERT_ACCOUNT, accountParms);
      SQLHelper.ExecuteNonQuery(trans, CommandType.Text, SQL_INSERT_PROFILE, profileParms);
      trans.Commit();
     
     }catch {
      trans.Rollback();
      throw;
     }
    }
   }

Top

你可能感兴趣的:(.net,string,insert,sql,.net,null,数据库)