|
Программирование >> Программирование с использованием ajax
SqlConnection thisConnection = new SqlConnection( @ Data Source=.\SQLEXPRESS; + @ AttachDbFilenazne=C:\SQL Server 2000 Sanple Databases\NORTHWND.MDF ; + @ Integrated Security=True;Connect Timeout=30;User Instance=true ); Открыть соединение thisConnection.Open (); Создать команду для данного соединения SqlCommand thisCommand = thisConnection.CreateCommand(); Установить в качестве типа команды StoredProcedure (хранимая процедура) thisCommand. CommandType = CommandType. StoredProcedure ; thisCommand.CommandText = Ten Most Expensive Products ; Выполнить DataReader для указанной команды SqlDataReader thisReader = thisCommand.ExecuteReader(); Пока читаются строки while (thisReader.Read О) { Вывести столбцы наименования продукта и его цены Console.WriteLine( \t{0}\t{l} , thisReader[ TenMostExpensiveProducts ], thisReader[ UnitPrice ]) ; Закрыть читатель thisReader.CloseO ; Закрыть соединение thisConnection.Close(); Console.Write( Программа завершена, нажмите Enter для продолжения: ); Console.ReadLine(); 3. Нажмите <F5> для запуска отладчика; вы должны увидеть результаты, показанные ниже (точные значения могут отличаться в зависимости от используемой версии базы данных Northwind): Cote de Blaye 263.5000 Thuringer Rostbratwurst 123.7900 Mishi Kobe Niku 97.0000 Sir Rodneys Marmalade 81.0000 Carnarvon Tigers 62:5000 Raclette Courdavault 55.0000 Manjimup Dried Apples 53.0000 Tarte au sucre 49.3000 Ipoh Coffee 46.0000 Rossle Sauerkraut 45.6000 Программа завершена, нажмите Enter для продолжения: Описание полученных результатов Эта программа открывает соединение, как и предыдущие примеры. Затем создается объект SqlCommand, и его параметр CommandType устанавливается в CommandType. StoredProcedure - значение перечисления вьгутри ADO.NET, обозначающее вызов хранимой процедуры. Когда CommandType равно StoredProcedure, свойство CommandText хранит имя хранимой процедуры, а не команду SQL. Остальная часть программы в точности такая же, как и при выполнении обычных команд SQL. Возвращаемые столбцы хранят разные значения, поэтому вывод может слегка отличаться. Использование LINQ поверх DataSetcADO.NET В предыдущей главе вы изучили LINQ to SQL и его преимущества, позволяющие упрощать запросы и доступ к базе данных. Можно также использовать LINQ в сочетании с ADO.NET, применяя средство LINQ поверх DataSet, что и рассматривается в этом разделе. Когда использовать UNQ поверх DataSet При наличии унаследованного кода, который уже использует объекты DataSet ADO.NET, LINQ поверх DataSet добавляет полный набор операторов запросов LINQ к ограниченным возможностям запросов, встроенным в исходный класс DataSet, не требуя переписывания всего приложения для использования классов LINQ to SQL. LINQ поверх DataSet также полезен, если приложению требуются расширенные манипуляции отключенными наборами данных. Использование LINQ поверх DataSet Выполните следующие шаги для создания программы LINQoverDataSet в Visual Studio 2008. 1. Создайте новое консольное приложение по имени LINQoverDataSet в каталоге C:\BegVCSharp\Chapter28. 2. Добавьте ссылку на компонент System. Data.Linq, как показано на рис. 28.7. lilHilHJlilillH >СТ сом I ProtKtf I Вгаим I Rac I
~] Canc l Рис, 28,7. Добавление ссылки на компонент System .Data. Linq Обратите внимание, что LINQ поверх DataSet также использует пространство имен System. Data. DataSetExtensions, которое автоматически добавляется Visual Studio. В случае UNQ поверх DataSet используется только малая часть средств LINQ to Entity, упомянутого в начале этой гяавы. Хотя LINQ to Entities сам по себе может служить темой целой книги для начинающих вроде этой, LINQ to DataSet - это лишь часть LINQ to Entity, которую можно применять немедленно на основе того, что уже известно о LINQ 3. Начните с добавления директив using для классов ADO.NET и LINQ, которые вы будете использовать: #region Using Directives using System; using System.Collections.Generic; using System.Linq; using System.Data; Использовать пространство имен ADO.NET using System.Data.SqlClient; Использовать пространство имен поставщика данных SQL Server using System.Data.Linq; Использовать коннектор LINQ / ADO.NET using System.Data.Common; using System.Text; tendregion 4. Добавьте показанный ниже код в метод Main (). Поскольку этот код такой же, как и начало кода программы DataRelationExample, вы можете счесть удобным вырезать и вклеить ее исходный файл: static void Main(string [ ] args) < Указать специфичную для SQL Server строку соединения SqlConnection thisConnection = new SqlConnection( @ Data Source=.\SQLEXPRESS; + @ AttachDbFilename=C:\SQL Server 2000 Sample Databases\NORTHWND.MDF; + © Integrated Security=True;Connect Timeout=30;User Instance=true ); Создать объект DataAdapter для обновления и прочих операций SqlDataAdapter thisAdapter = new SqlDataAdapter( SELECT CustomerlD, CompanyName FROM Customers , thisConnection); Создать объект CommandBuilder для построения команд SQL SqlCommandBuilder thisBuilder = new SqlCommandBuilder(thisAdapter); Создать DataSet для хранения связанных таблиц данных, строк и столбцов DataSet thisDataSet = new DataSet(); Установить объекты DataAdapter для каждой таблицы и заполнить их SqlDataAdapter custAdapter = new SqlDataAdapter( SELECT * FROM Customers , thisConnection); SqlDataAdapter orderAdapter = new SqlDataAdapter( SELECT * FROM Orders , thisConnection); custAdapter.Fill(thisDataSet, Customers ); orderAdapter.Fill(thisDataSet, Orders ); Установить DataRelation между заказчиками и заказами DataRelation custOrderRel = thisDataSet.Relations.Add( CustOrders , thisDataSet.Tables[ Customers ].Columns[ CustomerlD ], thisDataSet.Tables[ Orders ].Columns[ CustomerlD ]); 5. Теперь добавьте следующий код, использующий LINQ: var customers = thisDataSet.Tables[ Customers ].AsEnumerable(); var orders = thisDataSet.Tables[ Orders ].AsEnumerable(); var preferredCustomers = from с in customers where с.GetChildRows( CustOrders ).Length > 10 orderby c.GetChildRows( CustOrders ).Length select c;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |