Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Добавить данные через ADO  [new]
ГостьЭтогоФорума
Guest
Если необходимо только добавить данные в таблицу через ADO, что можно передать в метод Open() объекта ADO.RecordSet, чтобы он не возвращал мне всю таблицу. Просто, как я понимаю, в случае большой таблицы, выборка всех записей занимает лишнее время, и хочеться сделать это побыстрей.
1 авг 03, 10:12    [284586]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А зачем добавлять через рекордсет, когда можно через ХП, на худой конец запросом. Уж летать будет точна!
1 авг 03, 10:43    [284637]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
Senin Viktor
Member

Откуда: Подмосковье
Сообщений: 5006
Но если ну очень надо (т.е. надо проигнорировать предложение tpg), то открывай набор с Where по не существующему коду ключа. Например

Select бла-бла From Where MyPrimaryKey=0
1 авг 03, 10:46    [284643]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
bushmen
Member

Откуда: г. Москва
Сообщений: 828
А разве нельзя так:
dim cn as new adodb.connection, rs as new adodb.recordset

cn.open ....
rs.open "insert into table ...", cn, adOpenDynamic, adLockOptimistic

Никакие выборки на клиента не передаются
1 авг 03, 10:48    [284646]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
big-duke
Member

Откуда:
Сообщений: 6763
2bushmen
Лучше так : cn.Execute ("Insert ....")
1 авг 03, 10:55    [284657]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
bushmen, это и есть запросом. Только все это требует разруливать пермишены на таблицу. Лучше, в большинстве случаев, через ХП.
1 авг 03, 10:56    [284658]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
Pavel
Member

Откуда: Кемерово
Сообщений: 2435
bushmen, ты путаешь объект command c объектом recordset.
1 авг 03, 10:58    [284666]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
bushmen
Member

Откуда: г. Москва
Сообщений: 828
>tpg

А где ты в этом запросе видишь получение выборки с сервера?
1 авг 03, 11:15    [284708]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
AlexanderVS
Member

Откуда: Krasnoyarsk
Сообщений: 433
Если я не ошибаюсь, то в ADO если пишешь SELECT * FROM Table, то возвращены будут все данные. Если же в качестве параметра указать просто имя таблицы "Table" , в этом случае этого не происходит. Можно провертить данное утверждение, запустив профайлер.
1 авг 03, 11:17    [284712]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
Pavel
Member

Откуда: Кемерово
Сообщений: 2435
В DAO была возможность открыть рекордсет в режиме 'только для добавления'. В ADO этот режим исключили, что легко обходится свойством MaxRecords
1 авг 03, 11:22    [284721]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
bushmen, а я разве сказал что-то про выборку?
1 авг 03, 11:38    [284753]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
Senin Viktor
Member

Откуда: Подмосковье
Сообщений: 5006
2Pavel

>В ADO этот режим исключили, что легко обходится свойством MaxRecords

А что, с твоей точки, зрения будет эффективней:
MaxRecords=0 Или Where по несущ. ключу?
1 авг 03, 11:47    [284771]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
ГостьЭтогоФорума
Guest
to tpg

а что есть такое это ХП ?
1 авг 03, 12:22    [284857]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
Pavel
Member

Откуда: Кемерово
Сообщений: 2435
Senin Viktor
А что, с твоей точки, зрения будет эффективней:
MaxRecords=0 Или Where по несущ. ключу?

Запрос на добавление, да еще и в процедуре, думаю, будет эффективней :)
1 авг 03, 12:26    [284864]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
а что есть такое это ХП ?
Абревиатура от Хранимая Процедура
1 авг 03, 12:33    [284883]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
Senin Viktor
Member

Откуда: Подмосковье
Сообщений: 5006
2Pavel
>Запрос на добавление, да еще и в процедуре, думаю, будет эффективней :)

а все-таки? Что лучше?
Бывают ситуации, когда T-SQL не может сделать того, что может клиент. В таких случаях ничего страшного в открытии рекодсета на добавления нет, к тому же не надо забывать про пакетное обновление.
1 авг 03, 12:34    [284888]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
Jem
Member

Откуда:
Сообщений: 735
2 tpg
Если пермишенны стоят на ХП, а внутри ХП Insert...
Нужно ли выставлять пермишены на таблицу в которую Insert?
1 авг 03, 12:55    [284922]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Если ХП созданаот dbo, то нет. ХП всегда выполняется в контексте её создателя, а просто запрос в контексте пользователя запустившего его. Достаточно дать права на выполнение ХП пользователю и можно забыть о правах на таблицу (за некоторым исключением).
1 авг 03, 12:57    [284928]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные через ADO  [new]
Pavel
Member

Откуда: Кемерово
Сообщений: 2435
Senin Viktor
а все-таки? Что лучше?
Думаю MaxRecords=0, т.к. запрос получается без условия отбора, следовательно проще.
1 авг 03, 12:59    [284934]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить