Программирование >>  Программирование с использованием ajax 

1 ... 301 302 303 [ 304 ] 305 306 307 ... 396


Практическое заняти Извлечение одиночных значений

с помощью ExecuteScalar О

в качестве первого примера рассмотрим программу, которг1я получает количество строк в таблице Customers. Это подобно приведенному ранее примеру DataReader, но использует другой оператор SQL и метод выполнения.

1. Создайте новое консольное приложение по имени ExecuteScalarExample в каталоге С: \BegVCSharp\Chapter28 и добавьте обычные директивы using в начало кода:

#region Using Directives using System;

using System.Data; Использовать пространство имен ADO.NET

using System.Data.SqlClient; Использовать пространство имен

поставщика данных SQL Server

2. Добавьте следующий код в метод Main ():

static void Main(string[] args) {

SqlConnection thisConnection = new SqlConnection ( @ Data Source=.\SQLEXPRESS; +

(a AttachDbFilename=C:\SQL Server 2000 Sample Databases\NORTHWND.MDF; + (a Integrated Security=True;Connect Timeout=30;User Instance=true ); thisConnection.Open();

SqlCommand thisCommand = thisConnection.CreateCommand(); thisCommand.CommandText = SELECT COUNT (*) FROM Customers ; Object countResult = thisCommand.ExecuteScalar();

Console.WriteLine( Количество строк в таблице Customers = {0} , countResult); thisConnection.Close();

Console.Write( Программа завершена, нажмите Enter для продолжения: ); Console.ReadLine() ;

Описание полученных результатов

Эта программа использует SQL Server поставщика данных .NET. Центральная часть программы - такая же, как и в первом примере настоящей главы - открывает соединение с SQL Server на локальной машине с интегрированной системой безопасности и базой данных Northwind.

Вы создаете объект SqlCommand и присваиваете команду SELECT COUNT (*) ее свойству CommandText. COUNT () - функция SQL, возвращающая результат подсчета строк, которые соответствуют условию WHERE. Затем вызывается метод ExecuteScalar () объекта SqlCommand для выполнения запроса, извлекающего значение счетчика. Он отображается и программа завершается. При выполнении на базе данных Northwind программа отображает следующее (исходя из того, что запись для Zachary Zithers Ltd была удалена):

Количество строк в таблице =91

Это эквивалентно загрузке таблицы Customers в объект DataTable и использованию свойства Count объекта Rows, как в предыдущем примере. Зачем может понадобиться выполнять работу подобным образом? Это зависит от структуры данных и от того, что еще делается в программе. Когда есть лишь небольшой объем данных, или



по той или иной причине загружаются все строки в DataSet, имеет смысл просто воспользоваться DataTable. Rows. Count. Однако если требуется подсчитать точное количество строк в очень большой таблице, скажем, с 1 ООО ООО строк, то намного эффективнее издать запрос SELECT COUNT (*) с помощью метода ExecuteScalar (), вместо того, чтобы пытаться загрузить 1 ООО ООО строк в память.

Извлечение пустых данных

Довольно странный заголовок, учитывая то, что SQL-операции модификации данных вроде INSERT, UPDATE и DELETE не возвращают данных. Что интересно в этих командах, так это количество строк, которые они затрагивают. Это число и возвращается методом ExecuteNonQuery ().

Предположим, что один из поставщиков повысил цену на 5% для всех своих продуктов. В следующем практическом занятии показано, как использовать объект SqlCommand для выполнения SQL-команды UPDATE для повышения на 5% всех цен на продукты, поставляемые этим поставщиком.

Практическое занятие МОДИфикаЦИЯ ДЭННЫХ С ПОМОЩЬЮ

ExecuteNonQuery

Выполните следующие шаги для создания примера ExecuteNonQueryExample в Visual Studio 2008.

1. Создайте новое консольное приложение по имени ExecuteNonQueryExample в каталоге С: \BegVCSharp\Chapter28 и добавьте обычные директивы using в начало кода:

#region Using Directives using System;

using System.Data; Использовать пространство имен ADO.NET

using Sys tem. Data. SqlClient; Использовать пространство имен

постсшщика дгшных SQL Server

2. Добавьте следующий код в метод Main ():

static void Main(string[] args) {

SqlConnection thisConnection = new SqlConnection( (a Data Source=.\SQLEXPRESS; +

@ AttachDbFilename=C:\SQL Server 2000 Sample Databases\NORTHWND.MDF; + Integrated Security=True;Connect Timeout=30;User Instance=true );

thisConnection.Open();

SqlCommand thisCommand = thisConnection.CreateCommand(); thisCommand.CommandText = UPDATE Products SET + UnitPrice=UnitPrice*1.05 WHERE Supplierld=12 ; int rowsAffected = thisCommand.ExecuteNonQuery(); Console.WriteLine( Обновлено строк = {0} , rowsAffected);

thisConnection.Close();

Console.Write( Программа завершена, нажмите Enter для продолжения: ); Console.ReadLine();



Описание полученных результатов

Эта программа открывает соединение, как и в прошлом примере. Затем создается объект SqlCommand и присваивается команда Update. После этого вызывается метод ExecuteNonQuery () объекта SqlCommand для выполнения запроса, который возвращает количество строк, затронутых им в базе данных. Это количество строк отображается и программа завершается. При выполнении на базе данных Northwind программа отображает следующее:

Обновлено строк = 5

Это говорит о том, что изменения коснулись пяти продуктов.

Вызов хранимой процедуры SQL

и, наконец, рассмотрим пример вызова хранимой процедуры SQL - процедуры, написанной на SQL и хранящейся в базе данных. Хранимые процедуры инкапсулируют сложные запросы SQL и процедуры базы данных в едином целом, и могут быть вызваны множеством прикладных программ или непосредственно пользователями; администратор базы данных может быть уверен, что при каждом вызове хранимой процедуры будут выполнены в точности одни и те же шаги, гарантируя согласованное использование базы данных. Пользователи и разработчики приложений не обязаны запоминать сложный синтаксис запросов SQL; им лишь следует знать имя хранимой процедуры, и что она делает. База данных Northwind содержит несколько хранимых процедур.

Следующий пример вызывает процедуру Теп Most Expensive Products (десять наиболее дорогих продуктов), которая включена в базу данных примеров Northwind. Эта процедура возвращает два столбца: TenMostExpensiveProducts и UnitPrice. Испытаем ее.

занятие

Вызов хранимой процедуры

По существу эта программа представляет собой вариант самого первого примера настоящей главы - DataReading. Подобно командам SQL, хранимые процедуры могут возвращать одиночные значения, и в этом случае необходимо использовать ExecuteScalar или ExecuteNonQuery, как было только что показано для обычных команд SQL. Альтернативно они могут возвращать результаты запроса, которые читаются DataReader, как в приведенном ниже примере.

1. Создайте новое консольное приложение по имени SQLStoredProcedure в каталоге С: \BegVCSharp\Chapter28 и добавьте обычные директивы using в начало кода:

#region Using Directives using System;

using System.Data; Использовать пространство имен ADO.NET

using System.Data.SqlClient; Использовать пространство имен

поставщика данных SQL Server

2. Измените метод Main (), как показано ниже (здесь все так же, как в DataReading, за исключением выделенных полужирным отличий):

static void Main(string [ ] args) {

Указать специфичную для SQL Server строку соединения



1 ... 301 302 303 [ 304 ] 305 306 307 ... 396

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика