Поддержка баз данных в VB .NET
- Почему
ADO .NET — не ADO++
- Автономные
наборы данных: новый
подход к работе с базами
данных
- Классы
сборки System.Data.DLL
- Пространство
имен System.Data.OleDb
- System.Data.SqlClient
- Вызов
хранимой процедуры
- Нетривиальный
пример работы с базами
данных в VB .NET
Столь короткая
глава была написана с единственной
целью — ориентировать читателя в
нужном направлении. Ее
ограниченный объем не позволит нам
даже в общих чертах представить все
средства для работы с базами
данных в VB .NET (не говоря уже об их
содержательном обсуждении).
Чтобы
увидеть, как работают элементы,
связанные с данными (data-bound controls),
воспользуйтесь мастером Data Form Wizard.
Просмотр кода, сгенерированного
этой программой, поможет вам больше
узнать о возможностях VB. NET в
области работы с базами данных.
Почему ADO
.NET — не ADO++
В каждой из
предыдущих версий VB появлялась
новая модель поддержки баз данных.
VB .NET следует этой давней традиции и
представляет новый способ работы с
данными — ADO .NET. При ближайшем
рассмотрении выясняется, что
название выбрано крайне неудачно.
Почему? Потому что ADO .NET просто не
является следующим поколением ADO!
Это совершенно новая модель, не
имеющая ничего общего с
классическим вариантом ADO. В
частности, для работы с
результатами вам придется освоить
новую объектную модель, основанную
на объекте DataSet (объект ADO .NET DataSet не
привязан к одной таблице и поэтому
обладает значительно большими
возможностями, чем, например,
объект ADO RecordSet). Кроме того, модель
ADO .NET:
- проектировалась
как модель с полиостью
автономной архитектурой (хотя
классы DataAdapter, Connection, Command и
DataReader остаются
ориентированными на
соединение);.
- не
поддерживает курсоры на
стороне сервера. Динамические
курсоры ADO в ней не
поддерживаются;
- базируется
на языке XML [ Во внутреннем
представлении классов ADO .NET
используется оптимизированный
формат, но весь обмен данными
происходит в формате XML. ] (что
позволяет работать через
Интернет, даже если клиент
находится за. брандмауэром (firewall));
- входит
в сборку .NET System. Data. DLL, а не
реализуется на уровне языка;
- вряд
ли будет поддерживать старые
клиенты Windows 95.
Еще одна
интересная особенность ADO .NET
заключается в том, что для таких
важных средств, как двухфазная
актуализация данных (commit),
потребуется использовать Enterprise
Services (то есть фактически COM+/MTS с .NET-оболочкой).
Автономные
наборы данных: новый подход к
работе с базами данных
В VB6 типичное
приложение, использовавшее базы
данных, открывало соединение с
базой и использовало его для всех
запросов на протяжении жизненного
цикла программы. В VB .NET доступ к
базам данных средствами ADO .NET
обычно основан на автономных (отсоединенных)
операциях. За этим высокопарным
выражением кроется простой смысл: в
большинстве случаев после выборки
данных из базы соединение
разрывается. В ADO .NET постоянная
связь с источником данных
встречается очень редко (при
желании вы можете использовать
постоянные соединения
классической модели ADO, прибегнув к
услугам .NET COM Interop, однако при этом
неизбежно возникают проблемы
масштабируемости, издавна присущие
ADO).
Поскольку
программа обычно работает с
автономными данными, типичному
приложению .NET для обработки
каждого запроса приходится заново
подключаться к базе данных. На
первый взгляд это кажется большим
шагом назад, но такое впечатление
обманчиво. Старый способ
поддержания соединений плохо
подходит для мира распределенных
систем: если ваше приложение
открывает соединение с базой
данных и оставляет его открытым, серверу
приходится поддерживать это
соединение до тех пор, пока клиент
его не закроет. Учитывая
интенсивную загрузку современных
серверов и пересылку огромных
объемов данных, поддержание всех
клиентских соединений
отрицательно сказывается на
пропускной способности сервера.
Кроме того, в web-комплексах
[ Web-комплексом называется группа
компьютеров, обрабатывающих трафик
одного URL. Большинство крупных
сайтов обслуживается web-комплексами,
обеспечивающими более эффективное
распределение нагрузки. ](Web farm)
запросы могут обрабатываться
разными компьютерами. Постоянные
соединения с web-комплексами
бесполезны, поскольку вы не знаете,
какой сервер будет обрабатывать
последующие запросы.
Классы
сборки System.Data.DLL
Сборка System.Data.DLL
содержит большое количество
классов, разделенных на пять
пространств имен работы с данными с
дополнительным пространством
System.Xml.
Вспомогательное пространство System.Data.SqlTypes
содержит структурные типы,
соответствующие типам данных SQL Server
(например, Sql Money и SqlDateTime).
Поскольку
типы данных SQL реализованы в виде
структурных типов, их
преобразования отличаются большей
эффективностью по сравнению с
другими языками — например, по
сравнению с Java, где типы SQL
реализованы в виде ссылочных типов.
Другое
вспомогательное пространство имен,
System.Data .Common, содержит классы, часто
используемые при обращениях к
источнику данных. В этой главе
основное внимание уделяется
пространствам имен System. Data.OleDb и System.
Data. SqlCLient, выполняющим
непосредственную работу. Классы
этих пространств имен используют
средства System. Data. Common, включая класс
DataAdapter. Класс DataAdapter представляет
соединение с базой данных,
используемое при заполнении набора
данных или обновлении источника, а
также некоторые стандартные
команды при операциях с базами
данных.
Пространства
имен System.Data.OleDb и System.Data.SqtCLient
обладают сходной
функциональностью, с одним
исключением — классы System.Data.OleOb
предназначены для подключения к
источникам данных OLE DB, а классы System.Data.SqlCHent
ориентированы на Microsoft SQL Server версии
7 и выше.