|
Программирование >> Программирование с использованием ajax
Практическое заняти Извлечение одиночных значений с помощью 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 строку соединения
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |