Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 257

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 251 252 253 254 255 256 < 257 > 258 259 260 261 262 263 .. 404 >> Следующая


Вопросительные знаки (?) обозначают параметры, которые системой выполнения ADO.NET будут заменяться в командах на реальные значения; например, если мы захотим использовать метод Deleted для удаления строки, содержащей идентификатор клиента CustomeriD “ZACZI", то в момент вызова метода updated для удаления строки zaczi будет выполнена следующая команда:

DELETE FROM ‘Customers’WHERE ('CustomerlD'='ZACZI’)

Чтобы вывести команду select, мы воспользовались свойством seiectcommand, позволяющим получить команду непосредственно из объекта DataAdapter. У объекта DataAdapter также имеются свойства UpdateComicand, InsertCominand И Delete-Command, которые позволяют напрямую считывать или записывать SQL-команды, использующиеся для внесения изменений. Разработчик, знакомый с SQL, имеет возможность оптимизировать эти команды, добиваясь лучшего выполнения по сравнению с командами, генерируемыми объектом CommandBuilder, особенно в тех случаях, когда SQL-оператором select выбираются все имеющиеся столбцы.

Непосредственное выполнение SQL-команд

Если в программе требуется выполнить некоторую групповую операцию, такую как удаление или изменение всех строк, удовлетворяющих определенному условию, оказывается гораздо более эффективным (особенно прн работе с большими таблицами) осуществлять это с помощью единой SQL-команды, нежели производить все необходимые вычисления в программе на С#.

В ADO.NET есть объекты SqlCommand и oleDbcommand, предназначенные для выполнения SQL-команд. У этих объектов есть метод Executed, который осуществляет непосредственное выполнение SQL-команд. Нам уже приходилось пользоваться методом ExecuteReader в начале настоящей главы, когда мы изучали объект DataReader. Теперь мы приступаем к рассмотрению других методов Executed.
552

Глава 19

Практикум: использование метода ExecuteScalar объекта SqlCommand

В качестве самого первого примера рассмотрим программу, которая подсчитывает число строк в таблице; эта программа аналогична примеру DataReader, однако D ней используется другой QL-оператор и SQL-метод Execute. В данном примере для выполнения запроса используется метод ExecuteScalar о объекта SqlCommand; этот метод используется для выполнения SQL-команд, которые могут возвращать только скалярные значения (т. е. одиночные значения — в отличне от методов, возвращающих сразу несколько строк, например, ExecuteReader ()).

using System;

using System.Data;

using System.Data.SqlClient;

class DataExecuteScalarExample ( .

public static void Main()

{

SqlConnection thisConnection = new SqlConnectiont"Data Source=(local);¦ +

'Integrated 5ecurity=SSPI;Initial Catalog^northwind')j thisConnection.Open()j

SqlCoiraiand thisCommand = thisConnection.CreateCommandO ; thisCommand,CwnmandText = “SELECT COUITO (*) FROM Customers*;

Object countResult 9 thisComiBand.ExecuteScalar() (

Console. KriteLine( 'Count of Customers - {0 >" , countResult); thisConnection,Close О1

}

)

Как это работает

В этой программе используется провайдер данных .NET SQL (system.Data, sqiciient). Общая структура программы не отличается от структуры самой первой программы настоящей главы — установления соединения с SQL Server на локальной машине с использованием системы обеспечения безопасности SSPI и базы данных Northwind.

Далее в программе создается объект SqlCommand, которому присваивается команда select count (»), представленная в текстовом виде, count о — это SQL-функция, подсчитывающая число строк, которые удовлетворяют условию, заданному WHERE. После ЭТОГО вызывается метод ExecuteScalar объекта SqlCominand, который выполняет запрос на получение счетчика строк. Значение счетчнка выводится на экран, н программа завершает свою работу, Если выполнить эту программу для базы данных Northwind, то будет получен следующий выходной поток:

Count of Customers = 91

Это эквивалентно загрузке таблицы Customers в объект DataSet и вызову метода count о на объект Rows о, что и делалось в предшествующих примерах. Почему следует отдать предпочтение выполнению этой операцию таким образом? На самом деле, нее зависит от структуры данных и от того, каковы остальные действия, выполняемые в программе. Еслн вы оперируете небольшим объемом данных или загружаете все строки таблицы в объект DataSet по каким-либо другим причинам, ТО имеет прямой СМЫСЛ воспользоваться DataTable. Rows. Count. Напротив, если вам требуется подсчитать точное количество строк (порядка миллиона) в очень большой таблице, то более эффективным будет выполнить запрос select count о с методом ExecuteScalar о, вместо того чтобы пытаться загрузить в память миллион строк.
Доступ к данным посредством ADO.NET

553

Практикум: использование метода ExecuteNonQuery объекта SqICommand

Рассмотрим еще ОДИН Пример. Метод ExecuteNonQuery () объекта SqICommand выполняет такие SQL-команды, которые вообще не возвращают никаких данных, SQL-операции, предназначенные для внесения изменений в данные, — insert, update и delete, не возвращают никаких данных; что на самом деле представляет интерес при выполнении этих команд— так это число обработанных строк, которое и возвращается данными методами.
Предыдущая << 1 .. 251 252 253 254 255 256 < 257 > 258 259 260 261 262 263 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.