gpt4 book ai didi

.net - Connection关闭时DataReader没有关闭,后果?

转载 作者:太空狗 更新时间:2023-10-30 01:56:45 37 4
gpt4 key购买 nike

例如我有这段代码:

Sub Month()
Dim Conn As New Data.OracleClient.OracleConnection
Conn.Open()
Try

Dim Cmd As New Data.OracleClient.OracleCommand
With Cmd
.Connection = Conn
.CommandType = Data.CommandType.Text
.CommandText = "SELECT * FROM MONTH"
End With
Dim datareader As Data.OracleClient.OracleDataReader = Cmd.ExecuteReader
While datareader.Read
Response.Write(datareader(0))
End While
Catch ex As Exception
Throw ex
Finally
Conn.Close()
End Try
End Sub

当连接关闭(Conn.close)时,datareader 会发生什么

datareader 使用的 Cursor 会被释放吗?还是会保持开放?

如果数据读取器使用的游标仍然打开,它什么时候会自动关闭?还是我应该手动关闭它?

它会导致可怕的“ORA-01000: maximum open cursors exceeded”吗?

提前致谢

最佳答案

您应该在 using block 中创建对象,以便正确处理它们:

Using Conn As New Data.SqlClient.SqlConnection
Conn.Open()

Dim Cmd As New Data.SqlClient.SqlCommand
With Cmd
.Connection = Conn
.CommandType = Data.CommandType.Text
.CommandText = "SELECT * FROM MONTH"
End With

Using datareader As Data.SqlClient.SqlDataReader = Cmd.ExecuteReader()
While datareader.Read()
Response.Write(datareader(0))
End While
End Using
End Using

无需在连接或数据读取器上调用 Close。

关于.net - Connection关闭时DataReader没有关闭,后果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6182884/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com