Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Вебмастеру -> Сеппа Д. -> "Microsoft ADO.NET" -> 74

Microsoft ADO.NET - Сеппа Д.

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 68 69 70 71 72 73 < 74 > 75 76 77 78 79 80 .. 260 >> Следующая

istrSQL = "SELECT CustomerlD, CompanyName, ContactName, Phone " & _
"FROM Customers" Dim da As New 01eDbDataAdapter(strSQL, strConn) Dim ds As New DataSetQ da.Fill(ds, "Customers")
da.Fill(ds, "Customers")
Visual C# .NET
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;"
"Initial Catalog=Northwlnd;Trusted_Conneotion=Yes;";
strSQL = "SELECT CustomerlD, CompanyName, ContactName, Phone " +
"FROM Customers11 ; OleDbDataAdapter da = new 01eDbDataAdapter(strSQL, strConn); DataSet ds = new DataSetQ; da.Flll(ds, "Customers");
da.Fill(ds, "Customers");
Дважды вызывая метод вы указываете объекту DataAdapter дважды выполнить заданный запрос и дважды поместить его результаты в объект DataSet. При
146 Часть II Подключаемся: использование поставщика данных .НЕТ
вызове метода в объекте DataSet создается таблица < час л. При втором й:а"::ж метода Fill результаты запроса копируются в эту же таблицу объекта DataSet, Таким образом, в объекте DataSet будет по две записи о каждом клиенте.
Данный фрагмент кода не позволяет объекту DataAdapteryaHaTb, что имеется две !u(.'!iiii4iM>!\ записи об одном клиенте. Обычно администраторы БД определяют на таблицах БД первичные ключи. Одно из преимуществ подобной практики — невозможность со .'..и и ;а идентичных записей. У объекта Daiiila/ui имеется свойство PritnmyKeyA ели у заполняемого объектом DataAdapter объекта DataTable есть ключ, DataAdapter на его основе выявляет идентичные записи.
Подробнее о задании значения свойства PrimatyKey объекта DataTable — в. разделе «Выборка информации схемы» этой главы, а также в разделе главы 6, посвященном этому свойству,
Ik'pi !емсл к нашему примеру. Если перед повторным вызовом метода DataAdap-Гег-Шопредслить на таблице Customers объекта DataSet первичный ключ, объект DataAdapter выявит идентичные записи и отбросит старые значения.
Предположим, например, что в Щ изменились имя и телефон клиента. При повторном вызове метод Fill получит эти новые сведения. Объект DataAdapter с помощью первичного ключа объекта DataTable присутствует ли в таб-
лице запись о данном клиенте. да, она и DataAdapter доба-
вит в объект DataTableновую информацию. Тем не менее удаленные из БД записи из объекта DataTable и удаляются.
Представьте, что при первом вызове метода в БД присутство-
вала запись о клиенте, долгое время не платившем по и DataAdapter доба-
вил ее в объект DataTable. Позже кто-то осознал данный факт и удалил соответствующую запись из БД. Когда вы второй раз обратитесь к объекту DataAdapter, он не найдет записи об этом клиенте в результатах запроса, но, тем не менее, не удалит эту запись из объекта DataTable.
И мы опять возвращаемся в исходную точку. Чтобы обновить все данные, очистите объект DataSet или DataTable и повторно вызовите метод Fill объекта DataAdapter. Это позволит исключить идентичные записи (даже если на таблице не определен первичный ключ), а также удалить из объекта DataSet записи, отсутствующие в БД.
Сопоставление результатов запроса объекту DataSet
Ранее я уже рассказывал о роли набора ТаЫеМаррЩюбъешта DataAdapter. Сейчас я остановлюсь на том. как использовать этот набор в коде.
Набор TableMappings объекта DataAdapter
Набор как DataAdapter сопоставляет объект DataSet с
вашей БД. Если вы оставите набор TableMappings объекта DataAdapter пустым и вызовете метод Fill, передав ему в качестве параметра объект DataSet и не указав имя таблицы. DataAdapter решш. что вам нужен объект DataTable с именем Table.
Свойство TableMappings возвращает объект DataTableMappmgColtection,coRep-жащий набор объектов DataTableMappingCne дующая строка кода добавляет в набор TableMappings объект DataTableMappmg.xKA швая ОбЪеЗД¦DataAdapter, что он должен взаимодействовать с объектом DataTable Employees:
ГЛАВА 5 Получение данных с помощью объектов DataAdapter "47
DataAdapter. TableMappings.Add("Table", "Employees")
Создав объект ikknmneMappf':^ можно создавать сопоставления со столбцами таблицы. В одном из предыдущих примеров мы посредством следующего кода сопоставляли столбцы EmpID, LName и FName БД столбцам EmployeelD, LastName и FirstName объекта DataSet:
Visual Basic ,NET
Dim da As CTeDbBataAdapter 'Инициализируем объект DataAdapter Dim TblMap As DataTableMapping Dim ColMap As DataColumnMapping ТЫИар = da. TableMappings. Add( "Table", "Employees") ColMap = TblMap,ColumnMapplngs. AddCEmpID", "EmployeelD") ColMap = TblMap.ColumnMapplngs.Add("LName", "LastName") ColMap = TblMap,ColumnMapplngs.Add("FName", "FirstName")
Visual C# .NET
OleDbDataAdapter da; //Инициализируем объект DataAdapter DataTableMapping TblMap; DataColumnMapplng ColMap;
TblMap = da.TableMappings.Add( Table", "Employees"); ColMap = TblMap.ColumnMapplngs. Add{ "EmpID", "EmployeelD"); ColMap = TblMap.ColumnMapplngs.AddC'LName", "LastName"); ColMap = TblMap.ColumnMapplngs.Add("FName", "FirstName");
У объектов и Г)«ш:Ыши/1,Шрр)1щ<Шк(к>1 есть ме-
¦гед4|ШШз%й,позволяющий добавить б набор группу сопоставлений посредством одного вызова:
Предыдущая << 1 .. 68 69 70 71 72 73 < 74 > 75 76 77 78 79 80 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100