在C#中using一般有两种称谓,第一种是using指令,另一种是using语句;称谓不一样他们的用途也是不一样的,作为指令,它用于为命名空间创建别名或导入其他命名空间中定义的类型,详见MSDN,解释的非常清楚。
而他作为语句,用于定义一个范围,当程序执行完此范围的代码后,将此范围中的对象在末尾释放掉。
比如,
1
2
3
4
|
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { dt.Load(sdr); //此处用到sdr对象 } //此处释放sdr对象,并关闭connection对象连接 |
在这段代码中,sdr对象包含在小括号中,说明当using下的这段代码不管是执行成功或失败,只要离开了这段代码,会自动调用sdr对象的Dispose方法。CommandBehavior.CloseConnection的作用是当command对象释放时,connection也跟着关闭。它跟下面这段代码效果是一致的:
Try
conn.Open()
Return cmd.ExecuteNonQuery()
cmd.Parameters.Clear()
Catch ex As Exception
Return False
Finally
'关闭数据库连接,销毁cmd对象
If Not IsNothing(conn) Then
conn.Close()
conn = Nothing
End If
If Not IsNothing(cmd) Then
cmd.Dispose()
cmd = Nothing
End If
End Try
conn.Open()
Return cmd.ExecuteNonQuery()
cmd.Parameters.Clear()
Catch ex As Exception
Return False
Finally
'关闭数据库连接,销毁cmd对象
If Not IsNothing(conn) Then
conn.Close()
conn = Nothing
End If
If Not IsNothing(cmd) Then
cmd.Dispose()
cmd = Nothing
End If
End Try