что делает этот метод ADO OPEN? - PullRequest
1 голос

на простом английском вы можете объяснить мне, что происходит здесь:

rs.Open "batchinfo", oConn, adOpenKeyset, adLockOptimistic, adCmdTable

Что мне нужно сделать, так это уметь вставлять значения в таблицу с именем batchinfo. это будет лучший способ сделать ОТКРЫТЫЙ?

единственное, что я хотел бы сделать, это вставить значения.

Ответы [ 3 ]

2 голосов
/ 13 мая 2010

Использование adCmdTable обычно приводит к тому, что ADO генерирует команду select * from thetable, которая выполняется поставщиком OLE DB. Если вы обновляете результирующий набор записей, поставщик (или фактически ADO поверх него) обычно генерирует операторы вида update table set field = ?, ... WHERE .... Предложение WHERE является потенциальной проблемой. Если в таблице есть первичный ключ, то предложение WHERE будет включать этот первичный ключ обновленной записи и, таким образом, будет достаточно эффективным при ее выполнении. Поскольку вы только вставляете значения, это должно привести к генерации простых операторов INSERT и должно быть очень эффективным.

Обратите внимание, что если провайдер его поддерживает, то adCmdTableDirect приведет к открытию прямой таблицы, и обновления будут чрезвычайно эффективными. Я не знаю, поддерживает ли MySQL эту опцию; Я не думаю, что очень многие провайдеры поддерживают это.

0 голосов
/ 13 мая 2010

Я надеюсь, что это поможет вам.

dim sql, value
dim connection, rs

sql = "SELECT * FROM batchinfo"
value = "foo"

set connection = Server.CreateObject("ADODB.Connection")
set rs = server.CreateObject("ADODB.Recordset")

connection.open "Provider=SQLOLEDB.1;Persist Security Info=True;Data Source=192.168.0.1;Initial Catalog=Northwind;User ID=userId;Password=1234"
rs.open sql, connection, 0, 3, 1

rs.addNew
rs("fieldName1") = replace(value, "''", "'")
rs("fieldName2") = replace(value, "''", "'")

rs.update
rs.close
set rs = nothing
0 голосов
/ 13 мая 2010

rs - это объект RecordSet. (Набор записей похож на таблицу в памяти). Эта строка кода заставляет его открыть соединение с базой данных и получить данные, вызвав хранимую процедуру с именем "batchinfo" или, возможно, просто выбрав все строки из таблицы или представления с именем "batchinfo".

Этот метод полностью документирован здесь .

Один из вариантов - открыть набор записей, обновить значения в наборе записей в памяти, а затем вызвать метод Save () . (См. эту ссылку для примеров и как это сделать.)

Однако это НЕ самый эффективный способ обновления данных. Вам лучше использовать команду Обновить или Вставить

См. этот учебник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...