|
Программирование >> Программирование с использованием ajax
foreach (var customer in preferredCustomers) Console.WriteLine( {0} заказов: {1} {2}, {3} {4} , customer.GetChildRows( CustOrders ).Length, customer[ CustomerlD ], customer[ CompanyName ], customer[ City ], customer[ Region ] ); 6. Завершите метод Main () стандартной логикой закрытия, которая использовалась в прочих примерах: thisConnection.Close (); Console.Write( Программа завершена, нажмите Enter для продолжения: ); Console.ReadLine(); 7. Откомпилируйте и запустите приложение. Вы должны увидеть следующий вывод: Заказчики, у которых заказов > 10:
Программа завершена, нажмите Enter для продолжения: Описание полученных результатов Прежде чем конструировать DataRelation, вы должны создать объект DataSet и связать с ним таблицы базы данных, которые собираетесь использовать, как показано ниже: DataSet thisDataSet = new DataSet (); SqlDataAdapter custAdapter = new SqlDataAdapter ( SELECT * FROM Customers , thisConnection); SqlDataAdapter orderAdapter = new SqlDataAdapter ( SELECT * FROM Orders , thisConnection); custAdapter.Fill(thisDataSet, Customers ); orderAdapter.Fill(thisDataSet, Orders ); Вы создаете объект DataAdapter для каждой таблицы, на которую ссылаетесь. Затем вы наполняете DataSet данными из столбцов, с которыми будете работать; в этом случае вы не заботитесь об эффективности, потому просто используете все дос- тупные столбцы (SELECT * FROM <таблица>). Затем строится объект DataRelation, который связывается с DataSet: DataRelation custOrderRel = thisDataSet.Relations.Add( CustOrders , thisDataSet.Tables[ Customers ].Columns[ CustomerlD ], thisDataSet.Tables[ Orders ].Columns[ CustomerlD ] ) ; Теперь вы готовы искать заказчиков и заказы. Ваш первый шаг - цикл foreach для отображения информации о каждом заказчике: foreach (DataRow custRow in thisDataSet.Tables[ Customers ].Rows) { Console.WriteLine( ID заказчика: + custRow[ CustomerlD ] + Название: + custRow[ CompanyName ]); Здесь осуществляется проход циклом по коллекции Rows таблицы Customers с печатью CustomerlD и CompanyName для каждого заказчика. После отображения заказчика выводятся связанные с ним заказы. Для этого добавляется вложенный цикл foreach, инициализированный методом GetChildRows () объекта DataRow. Объект DataRelation передается методу GetChildRows () , который возвращает DataRowCollection, содержащую только связанные с данным заказчиком Объекты таблицы Orders. Чтобы отобразить эти связанные строки, выполняется цикл foreach по каждой DataRow в коллекции: namespace LINQtoDataSet { class Program { static void Main(string[] args) { 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; Затем процесс повторяется для каждого заказчика. К выводу OrderlD добавляются ведущие пробелы, так что заказы каждого заказчика отображаются со смещением относительно информации о заказчике. Благодаря такой организации отображения, можно наглядно видеть отношение родительский-дочерний между каждым заказчиком и его заказами. Заказчик Zachary Zithers Ltd. не имеет заказов, поскольку он был добавлен в таблицу в предыдущих примерах. Резюме В главе рассматривались следующие основные темы. □ ADO.NET- часть .NET Framework, которая позволяет обеспечить доступ к реляционным базам данных и другим источникам информации. Технология ADO.NET спроектирована так, чтобы предоставлять простой, гибкий каркас доступа к данным. Она ориентирована на многослойную архитектуру приложений и интегрирует реляционные данные с XML. □ Классы ADO.NET содержатся в пространстве имен System. Data. Была рассмотрена объектная модель ADO.NET и роли, которые играют ее основные объекты, включая соединения, команды, DataReader, адаптер данных, DataSet, DataTable, DataRow и DataColumn. □ Поставщики данных .NET, предоставляющие доступ к определенным источникам данных, и возможность расширения ADO.NET за счет написания поставщиков для новых источников. Вы ознакомились с такими поставщиками данных, как ADO.NET для Microsoft SQL Server и источники OLE DB, а также узнали о том, что они содержатся в пространствах имен System. Data. SqlClient и System. Data. OleDB соответственно. □ Вы узнали, как реализуется быстрый доступ только для чтения к данным через объект DataReader, и как написать эквивалентную программу для поставщиков данных .NET - как SqlClient, так и OleDb. Вы научились обновлять данные и добавлять новые строки данных через объекты DataSet, адаптеры данных и объекты CommandBuilder. Вы также узнали, как находить строки с применением первичного ключа, а также удалять строки. □ Доступ к множеству таблиц в DataSet через объект DataRelation для генерации XML-представления этих данных. И, наконец, вы кратко ознакомились с преимуществами поддержки языка SQL баз данных в ADO.NET, включая отображение сгенерированных команд SQL, прямое выполнение SQL и вызов хранимых процедур. Как было показано, создание кода баз данных может оказаться достаточно сложной задачей, если приложение не относится к числу самых простых. В следующей главе мы рассмотрим инструменты Visual Studio 2008, которые создают большую часть сложного кода и значительно облегчают разработку приложений баз данных. Упражнения L Модифицируйте программу, приведенную в первом примере, чтобы она использовала таблицу Employees базы данных Northwind. Извлеките столбцы EmployeelD и LastName. 2. Модифицируйте первую программу, демонстрирующую применение метода Update (), для изменения названия компании обратно в Bottom-Dollar Markets . 3. Напишите программу, запрашивающую у пользователя идентификатор заказчика. 4. Напишите программу для создания некоторых заказов для заказчика Zachary Zithers; используйте простые программы для просмотра заказов. 5. Напишите программу для отображения различных частей иерархических отношений в базе данных Northwind, использованных в настоящей главе, таких как Products, Suppliers и Categories. 6. Запишите данные, сгенерированные в предыдущем упражнении, в виде документа XML. 7. Измените программу, выводящую детальную информацию о заказах и продуктах для всех заказчиков, чтобы она использовала конструкцию WHERE в операторе SELECT для таблицы Customers, тем самым ограничивая количество обрабатываемых заказчиков. 8. Модифицируйте программу, выводящую текст операторов UPDATE, INSERT и DELETE, чтобы она использовала в качестве SQL-команды SELECT * FROM Customers . Обратите внимание на сложность сгенерированных операторов. 9. Модифицируйте пример LINQoverDataSet для использования таблицы Employees базы данных Northwind, как в первом упражнении. Извлеките столбцы EmployeelD и LastName.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |