Поддержка баз данных в VB .NET
Столь короткая
глава была написана с единственной
целью — ориентировать читателя в
нужном направлении. Ее
ограниченный объем не позволит нам
даже в общих чертах представить все
средства для работы с базами
данных в VB .NET (не говоря уже об их
содержательном обсуждении).
Чтобы
увидеть, как работают элементы,
связанные с данными (data-bound controls),
воспользуйтесь мастером Data Form Wizard.
Просмотр кода, сгенерированного
этой программой, поможет вам больше
узнать о возможностях VB. NET в
области работы с базами данных.
В каждой из
предыдущих версий VB появлялась
новая модель поддержки баз данных.
VB .NET следует этой давней традиции и
представляет новый способ работы с
данными — ADO .NET. При ближайшем
рассмотрении выясняется, что
название выбрано крайне неудачно.
Почему? Потому что ADO .NET просто не
является следующим поколением ADO!
Это совершенно новая модель, не
имеющая ничего общего с
классическим вариантом ADO. В
частности, для работы с
результатами вам придется освоить
новую объектную модель, основанную
на объекте DataSet (объект ADO .NET DataSet не
привязан к одной таблице и поэтому
обладает значительно большими
возможностями, чем, например,
объект ADO RecordSet). Кроме того, модель
ADO .NET:
Еще одна
интересная особенность 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.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 и выше.