2013-05-28 2 views
2

HI моя задача - преобразовать и старую программу, использующую соединение ADOOB для использования соединения SqlClient. В чем разница?Каковы основные различия между ADODB и SqlClient в VB.net

+0

что ADOOB? .. –

+2

Основное различие заключается в ADODB вы используете наборы записей. SqlClient работает через ADO.Net и не имеет RecordSets, он имеет более новые методы, такие как DataReaders. –

ответ

2

ADODB использует более старую библиотеку ADO. Этот код существует в основном для совместимости со старым кодом и упрощения переноса старого кода вперед. Это также на другом уровне абстракции. ADODB определяет набор критериев, которые могут реализовать объекты для подключения к любому типу базы данных. SqlClient специфичен для Sql Server. Однако SqlClient реализует новый контракт поставщика ADO.Net. Когда это возможно, даже при переносе старого кода, предпочитайте SqlClient или другого поставщика ADO.Net.

1

System.Data.SqlClient namespace отличается от Microsoft ActiveX Data Objects, но не настолько, чтобы просмотреть документацию не следует, чтобы вы установили правильный путь, если оба используют SQL-сервер для своего внутреннего сервера.

Оба устройства используют соединения и позволяют использовать интерфейсы «command» или «record-set», но по очевидным причинам первое из них более тесно интегрировано в .Net. Вероятно, вы найдете много примеров, когда код VB.Net в вашем приложении можно удалить, так как вы будете иметь эту функциональность, встроенную в новый интерфейс.

5

OleDb более общий. Если вы когда-нибудь перейдете к другому типу базы данных в будущем, есть хороший шанс, что у него будет драйвер Ole, и вам не придется менять столько кода.

С другой стороны, родной драйвер сервера Sql должен быть быстрее, как вы сказали, и имеет более удобную поддержку параметров (параметры могут использовать имена и не должны быть в порядке).

Существовали некоторые ограничения в Адо библиотеке некоторые из следующих были известные ограничения

  1. иерархические наборы записей не поддерживаются.

  2. Курсоры на стороне сервера (кроме курсоров FO-RO) поддерживаются только для баз данных Microsoft SQL Server.

  3. Множественные операторы SQL с разделителями с запятой поддерживаются в методах Recordset.Open, но не в методе Execute объектов Connection и Command.

  4. параметризованные хранимые процедуры не поддерживаются с базами данных Oracle

  5. Асинхронное выполнение разрешено для открытого способа подключения и объектов Recordset, но не для метода Execute соединения и объекты Command.

  6. Метод UpdateBatch объекта Recorset требует, чтобы оператор источника SQL включал ключевые поля всех задействованных таблиц и не работал с операторами JOIN со старым синтаксисом, с вложенными операторами SELECT и с дериватными таблицами.

  7. Оператор SELECT, используемый для открытия набора ключей на стороне сервера и динамических курсоров, должен содержать по крайней мере один столбцы с недействительными ключами.

  8. Метод Move не работает и вызывает исключение с помощью серверных динамических курсоров.

  9. Элементы Index, Seek, MarshalOption, StayInSync класса Recordset не реализованы и отмечены как устаревшие.

  10. Элементы класса Recordset, Clone и Find для класса Recordset не применяются для ключей и других серверных курсоров.

  11. Элементы CommandStream, Dialect, NamedParameters и подготовленные члены класса Command не реализованы и отмечены как устаревшие.

  12. Методы ReadText, WriteText и SkipLines класса Stream не реализованы и отмечены как устаревшие.

  13. Несколько динамических свойств объектов Connection или Recordset не поддерживаются.

  14. Класс ADODB.Record не поддерживается.

Некоторые из функций, частично или не поддерживается

надеюсь, что это помогает

+0

спасибо, что мне нужно –

+0

@shaikibrahim, если он помог любезно согласиться с ответом –

Смежные вопросы