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

 

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

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

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 75 76 77 78 79 80 < 81 > 82 83 84 85 86 87 .. 260 >> Следующая

Свойство AcceptChangesDuringFiil
Работая в службе поддержки и помогая разработчикам решать проблемы с ADO, я поразился, насколько много людей пытаются использовать ADO в качестве средства синхронизации. Они выполняют запрос к одной БД, а затем перенацеливают объект Recordset на другую БД и вызывают метод Update, надеясь, что ADO синхронизирует таблицы двух БД. В ADO такая синхронизация невозможна. Зато в ADO.NET она, вроде бы, осуществима.
У объекта DataAdapter есть свойство AcceptChangesDuringFiil, принимающее логическое значение. Это свойство, значение которого по умолчанию — True. управляет значением свойства RowState записей, получаемых объектом DataAdapter. Если значение CBoticTBaAcceptCbangesDwingFil!- True, значением свойства ШШЗШШ записей, получаемых объектом DataAdapter, будет Unchanged. При значении False
свойству RowState новых объектов DataRow задается значение New.
Это означает, что, задав свойству AcceptCbangesDuringFilkna4emie False, удается выполнить запрос к таблице одной БД, передать итоговый объект DataSet объекту DataAdapter, сконфигурированному для взаимодействия с другой БД, и вставить в эту БД все новые записи.
Свойство ContinueUpdateOnError
Объект DataAdapter обновляет БД на основе оптимистической модели. Когда вы выбираете содержимое записи, изменяете эту запись в объекте DataSet и затем передаете отложенные изменение в БД при помощи объекта DataAdapter, обновление может завершиться ошибкой, если другой пользователь успел изменить содержимое этой же записи БД. Не волнуйтесь: эта ситуация подробно обсуждается в главах 10 и Сейчас вам нужно знать лишь, что у оптимистов не все всегда работает, как надо.
Свойство ContinueUpdateOnError объекта DataAdapter определяет, что произойдет в случае ошибки при передаче отложенных изменений объекта DataRow. Значение этого свойства по умолчанию — False, т. е. при ошибки DataAdapter прекращает обновление. Если необходимо, чтобы в такой ситуации DataAdapter продолжил передавать отложенные изменения других объектов Data-
Row, задайте свойству ContinueUpdateOnError значение True.
Когда требуется, чтобы DataAdapter прекратил передачу изменений при возникновении ошибки? Есжоекс, отложенные изменения в объекте DataSet представляют собой заказ и клиент не хочет размещать лишь часть этого заказа. Это позиция «все или Kv::".!^.;.-. Итак, перед передачей изменений вы начинаете транзакцию, и если одна из операций обновления завершилась ошибкой, откатываете транзакцию. В данном случае нет смысла передавать оставшиеся изменения, если обновление предыдущего ряда закончилось ошибкой.
ГЛАВА 5 Получение данных с помощью объектов DataAdapter
163
Методы объекта Оа1аЛ(1ар1ег
В табл. 5-2 перечислены четыре метода, предоставляемых объектом -У-и^/'-й^ргег. Таблица 5-2. Методы объекта 01еОЬОа1аАОар1ег
Метод.
Fill
FillScbema
GetFiUParametera Update
_Описание_
Выполняет хранящийся в свойстве Seie^Oi-imr^ запрос и помещает его результаты в объект DataTable
Получает информацию схемы для запроса, хранящегося в свойстве SelectCommand
Возвращает массив с параметрами для свойства SelectCommand
Передает в БД изменения, хранящиеся в объекте DataSet (DataTable ИЛИ Data-Rows)
Метод Fill
При вызове метода Dala-ida/derFi выполняется запрос, хранящийся в свойстве SelectCommand, и его результаты помещаются во вложенный объект DataTable объекта DataSet. Кроме того, метод Fill возвращает 32-разрядное значение типа integer, соответствующее числу записей, полученных объектом DataAdapter, Ниже показано, как использовать метод Fill:
Visual Basic .NET
da As New 01eDbDataA(Jspter(.strSGL, strConn) Dim ds As New DataSetO
Dim intRowsRetrieved As Integer = da.Fill(ds)
Visual C# NET
OleDbDataAdapter da = new 01eDbDataAdapter(strSQL, StrConn);
DataSet ds = new DataSetO;
int intRowsRetrieved = da. Fill(ds);
Объект DataAdapter просматривает содержимое своего набора TableMappings и определяет, какие объекты DataTable и DataColumn указанного вами объекта DataSet использовать. Если в наборе TableMappings или объекте DataSet ожидавшейся информации схемы не обнаружено, объект DataAdapter проверяет значения свойств Vi^'i/e)laff'bii.;Ai Ни и MixsitigSdx'hhtAclini и определяет, что предпринять дальше.
Метод Fill объекта DataAdapter перегружен. Вместо объекта DataSet можно указывать Data Table. Можно также указать DataSet и строку с именем объекта тШШ который требуется заполнить или создать:
Visual Basic NET
Jim da As New 01eDbDataAdapter(strSQL. strConn)
Dim ds As New DataSetO
Dim intRowsRetrieved As Integer
intRowsRetrieved = da.FiJl(ds. "Customers")
164 Часть It Подключаемся: использование поставщика данных .МЕТ
intRowsRetrieved = da. Fmtds.Tablesi'-Customers")) intRowsRetrieved = da.Fill(ds, 11, 10, "Customers")
Visual C# NET
DleDbDataAdapter da = new OleDbDataAdaptertstrSQL, strConn); IDataSet ds = new DataSetO; int intRowsRetrieved;
intRowsRetrieved =
intRowsRetrieved = da. Fill(ds.Tables["Customers"]); intRowsRetrieved = da.Fill(ds, 11, 10, "Customers");
Предыдущая << 1 .. 75 76 77 78 79 80 < 81 > 82 83 84 85 86 87 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100