Я - парень из ASP.NET C #, который должен вернуться к классическому ASP и нуждается в некоторой помощи с ним.
Сначала посмотрите на эти две функции (я знаю, что в VBScript комментарии объявлены'
, а не //
, но подсветка синтаксиса здесь путается с '
).
Первая версия:
Function DoThing
Dim Connection, Command, Recordset
Set Connection = Server.CreateObject("ADODB.Connection")
Set Command = Server.CreateObject("ADODB.Command")
Set Recordset = Server.CreateObject("ADODB.Recordset")
Connection.Open "blah blah blah"
Command.CommandText = "blah blah blah"
Recordset.Open Command, Connection
If Recordset.EOF = False Then
While Recordset.EOF = False Then
// Do stuff.
Recordset.MoveNext
WEnd
Else
// Handle error.
End If
Recordset.Close
Connection.Close
Set Recordset = Nothing
Set Command = Nothing
Set Connection = Nothing
End Function
Вторая версия:
Function DoAnotherThing
Dim Connection, Command, Recordset
Set Connection = Server.CreateObject("ADODB.Connection")
Set Command = Server.CreateObject("ADODB.Command")
Connection.Open "blah blah blah"
Command.ActiveConnection = Connection
Command.CommandText = "blah blah blah"
Set Recordset = Command.Execute
If Recordset.EOF = False Then
While Recordset.EOF = False Then
// Do stuff.
Recordset.MoveNext
WEnd
Else
// Handle error.
End If
Recordset.Close
Connection.Close
Set Recordset = Nothing
Set Command = Nothing
Set Connection = Nothing
End Function
Теперь давайте начнем с вопросов:
Вопрос № 1:
Что лучше,
Connection.Open "blah blah blah"
Command.CommandText = "blah blah blah"
Recordset.Open Command, Connection
или
Connection.Open "blah blah blah"
Command.ActiveConnection = Connection
Command.CommandText = "blah blah blah"
Set Recordset = Command.Execute
?
Вопрос № 2:
При выполнении SELECT я должен использовать отключенные наборы записей, такие как
Set Recordset = Command.Execute
Command.ActiveConnection = Nothing
Connection.Close
Set Connection = Nothing
?
Вопрос № 3:
Должен ли я звонить
Recordset.Close
Connection.Close
, хотя я делаю
Set Recordset = Nothing
Set Command = Nothing
Set Connection = Nothing
прямо внизу (то есть сборщик мусора при вызовеSet Stuff= Nothing
также .Close
до уничтожения)?
Вопрос № 4:
Нужно ли включать
Recordset.Close
Connection.Close
Set Recordset = Nothing
Set Command = Nothing
Set Connection = Nothing
, хотя функциязаканчивается там, и эти объекты выходят за рамкии сборщик мусора (должен) позаботится о них?
Вопрос № 5:
У классического ASP есть пул соединений, так что я могу открывать и закрывать их с помощью каждой команды, или я должен пройтиобщий объект связи вокруг?
Заранее спасибо за помощь, Андреа.