Высокоуровневые методы информатики и программирования. Тузовский А.Ф. - 184 стр.

UptoLike

Составители: 

184
Метод ExecuteNonQuery() самый простой из методов выпол-
нения команды, он возвращает только количество обработанных запи-
сей БД. Данный метод применяют для вызова команд SQL и хранимых
процедур, таких, как INSERT, UPDATE или DELETE, а также команд из-
менения схемы БД – DDL.
Метод ExecuteScalar() возвращает только значение первого
поля первой строки полученной выборки, независимо от того, сколько
строк было получено.
Метод ExecuteReader() возвращает объект DataReader, кото-
рый позволяет выполнять последовательное чтение данных от начала до
конца выборки. Если не требуется модифицировать содержимое БД, то
этот способ извлечения данных является самым быстрым и эффектив-
ным.
Формирование запросов SQL во время выполнения
Иногда содержание оператора запроса SQL становится известным
только в период выполнения. Например, запрос может использовать
строку поиска, введенную пользователем, или возвращать столбцы или
таблицы, определенные программно в период выполнения. Для решения
этих задач соответствующие команды SQL должны создаваться, на-
страиваться и исполняться динамически, во время выполнения про-
граммы.
Для такого динамического формирования SQL команд описывают
заготовку текста команды, и добавлять к ней строковые переменные,
которые добавляются в период выполнения приложения. Для объедине-
ния строк используйте оператор конкатенации “+”. Например:
string Cmd = "SELECT * FROM Employees WHERE Name = '" +
aString + "'";
Отметим, что любые строковые переменные, передаваемые базе
данных при помощи конструкции WHERE оператора SELECT необходимо
заключать в одинарные кавычки ('). Если одинарные кавычки находятся
внутри такой переменной, следует заменить их парой одинарных кавы-
чек (''), в противном случае, исполнение запроса закончится неудачей.
Следующий пример демонстрирует динамическое формирование
команды DELETE, в которую вставляется значение поля Name удаляе-
мых записей:
//Этот пример предполагает наличие объекта myConnection
// строка aStr содержит значение поля Name
public void DeleteRecord(string aStr)
{
string Cmd;