Разница между conn.execute и rs.open заключается в том, что использование методов conn.execute, rs.open и command.execute сильно различается.
Обычно для формирования набора записей можно использовать
Set rs=conn.execute (SQL).
или напрямую
rs=CONN.execute(SQL)
и
Set rs=Server.CreateObject("ADODB.Recordset")
rs.open SQL,CONN,0,1 или rs.open SQL,CONN
В этом случае производительность открытия обычно немного лучше, чем в предыдущем.
(Командный объект более гибок и имеет более широкий диапазон выполнения.)
Используя CONN.execute, вы можете напрямую выполнить следующий набор rs=conn.execute(SQL), не закрывая его.
Но производительность и скорость будут сильно снижены!!
Это примерно в 2-5 раз медленнее!! (Я лично проверял это в цикле msSQL 1000 раз, если не верите, немедленно проверьте сами), поэтому перед выполнением следующего rs=conn.execute обязательно закройте!! Это
хорошая идея, привычка!
При использовании rs rs.open одного объекта перед открытием следующего набора записей необходимо закрыть отображение, иначе возникнет ошибка. Скорость в принципе одинакова в случае SQL, CONN, 0, 1,
так что мне нравится. использовать CreateObject(" adodb.recordser" (если нет необходимости чередовать несколько наборов записей, несколько записей не являются проблемой!)
Тогда используйте его от начала до конца!!!
Открыть и закрыть. Открыть и закрыть. Последний набор rs=nothing подходит к концу!
Что еще более важно, open обеспечивает очень гибкий способ работы со многими атрибутами метаданных базы данных!
Когда вы откроете сундук с сокровищами, вы увидите все в золотом свете!
Есть много ситуаций, когда вам придется использовать open!
И conn.execute хочет подменить пленку под черную ткань~~~подкрасться~~очень просто!!!
Например:
rs1.open SQL1,conn,0,1
rs.open SQL, conn, 1,3
если rs(0)<0, то rs(0)=0
rs(1)=ааа
rs(2)=bbb
rs.update 'Обновляем набор записей и записываем его в базу данных
rs.addnew 'Добавляем новую запись
рс(0)=1
rs(1)=ддд
rs(2)=ккк
RS.обновление
id=rs(3) rs(s) 'Выбранное поле представляет собой автоматический номер. Немедленно получите автоматический идентификатор номера новой записи //Это очень часто используется.
rs1.addnew добавляет новую запись, связанную с rs1, с помощью метода. идентификатор rs.
rs1("id"=id
rs1(1)=...
..
rs1.update
rs1.close:set rs1=ничего
rs.close:set rs=ничего
Если для вышеуказанной операции используется CONN.execute, будут использоваться четыре CONN.execute
CONN.execute("update .."
CONN.execute("Вставить в таблицу 1:"
rs=CONN.execute("выбрать новый автоматический идентификатор"
CONN.execute("вставить в таблицу 2"
Какой метод более логичен и понятен с первого взгляда?
Также есть интересный способ использовать Recordset, открытый для записи!!
Когда я об этом думаю, это немного сбивает с толку.
Set rs=server.CreateObject("Adodb.recordset"
Set rs=server.CreateObject("Adodb.recordset"
rs.open SQL1,CONN
rs.open SQL2, CONN
устанавливает два объекта с одинаковым именем одновременно, чтобы открыть два набора записей, и они доступны!
'Пока имена столбцов соответствуют метаданным в этих двух наборах записей
«Тогда работа нормальная!!
Разверните
Set rs=server.CreateObject("Adodb.recordset"
Set rs=server.CreateObject("Adodb.recordset"
Set rs=server.CreateObject("Adodb.recordset"
Set rs=server.CreateObject("Adodb.recordset"
rs.open SQL1,CONN
rs.openSQL2,CONN
rs.open SQL3,CONN
rs.open SQL4, CONN,
который больше двух rs с одинаковым именем!!
Это немного похоже на совместный запрос с SQL и последующее открытие набора записей~~~
Я уже использовала его таким образом!! Это не должно быть ослепительно!!
===============
Когда что использовать?
Это просто основано на моем личном опыте:
Если вам нужно коснуться базы данных только один раз, используйте выполнение
Если вы хотите выполнять сложные операции с базой данных, лучше всего использовать rs.open.