Опубликован: 11.09.2006 | Уровень: специалист | Доступ: платный
Лекция 4:

Работа с данными

Выбираем таблицу Customer (Customers), нажимаем кнопку Add и затем Close. Затем в окне Query Builder выбираем все столбцы (All Columns), как показано на рис. 4.35.

Добавление столбцов. Поставив галочку напротив пункта (All Columns), мы извлекаем все столбцы из таблицы

Рис. 4.35. Добавление столбцов. Поставив галочку напротив пункта (All Columns), мы извлекаем все столбцы из таблицы

Нажимаем кнопку OK. В окне Generate the SQl statements, к которому мы вернулись, приводится SQL-запрос, созданный Мастером:

SELECT
    Customer.*
FROM
    Customer  SELECT
    Customers.*
FROM
    Customers

Обратите внимание, что синтаксис этих запросов несущественно отличается от "классического" SQL- запроса, рассмотренного выше.

Нажимаем кнопку Next. В окне "Обзор результатов мастера" (View Wizard Results) приводится список результатов работы Мастера. Вид этого списка может отличаться так, как это изображено на рис. 4.36 и рис. 4.37.

Список  результатов работы Мастера объекта OleDbDataAdapter

Рис. 4.36. Список результатов работы Мастера объекта OleDbDataAdapter
Список  результатов работы Мастера объекта SqlDbDataAdapter

Рис. 4.37. Список результатов работы Мастера объекта SqlDbDataAdapter

Чем обусловлено это различие? Для базы данных Access мастером создана возможность не только просмотра данных из базы данныхSQL-запрос SELECT, но и возможность ее изменения — запросы INSERT, UPDATE, DELETE. Для базы данных SQL Server создана лишь возможность просмотра базы данных. Для изменения данных необходимо проходить авторизацию (рис. 4.31) с учетной записью администратора базы данных.

Нажимаем кнопку Finish. Для объекта OleDbDataAdapter возникает окно (рис. 4.27), которое мы уже описывали выше.

Мастер создал на панели компонент по два элемента, oleDbDataAdapter1 и oleDbConnection1 для VisualDataMDB и sqlDbDataAdapter1 и sqlDbConnection1 для VisualDataSQL. oleDbDataAdapter1 (или sqlDbDataAdapter1 ) является основным компонентом типа OleDbDataAdapter (или SqlDataAdapter ), который мы создавали при помощи мастера. Объект oleDbConnection1 (или sqlDbConnection1) был создан мастером как необходимый элемент подключения к базе. Образно говоря, мы получили адаптер (DataAdapter1) и вилку (Connection1) для подключения к источнику данных. Теперь нам необходимо добавить объект DataSet — тот самый "буфер", в котором будет храниться информация, полученная из базы данных. Щелкаем на oleDbDataAdapter1 (или sqlDbDataAdapter1) для его выделения. Открываем свойства этого элемента. На информационной панели щелкаем на ссылку Generate DataSet для создания объекта DataSet6Можно также создать объект DataSet, перетащив его на форму из вкладки Data панели инструментов ToolBox (р ис. 4.38):

Создание DataSet

Рис. 4.38. Создание DataSet

В появившемся окне Generate DataSet задаем имена — dsCustomer и dsCustomers соответственно. Итак, все "невидимые" части механизма подключения к базе данных у нас уже есть. Осталось теперь связать видимый интерфейс с данными. Объектом, отображающим данные на форме, у нас является dataGrid1. В свойстве этого элемента DataSource (источник данных) выбираем в качестве источника созданный объект dsCustomer1 (рис. 4.39).

Определение источника данных для элемента управления dataGrid1

Рис. 4.39. Определение источника данных для элемента управления dataGrid1

На форме в режиме дизайна у нас немедленно появилась символическая таблица со знаком (+). Последнее, что нам осталось сделать, — это заполнить объект DataSet (здесь dsCustomer1 ). Переходим в код форм и вносим соответствующие добавления:

using System.Data.OleDb;
// Подключаем  пространство имен  для работы с поставщиком OleDb 

private void Form1_Load(object sender, System.EventArgs e)
  {
      oleDbDataAdapter1.Fill(dsCustomer1);
}
  using System.Data.SqlClient;
// Подключаем  пространство имен  для работы с поставщиком SQL

private void Form1_Load(object sender, System.EventArgs e)
  {
      sqlDataAdapter1.Fill(dsCustomers1);
            }

В обоих случаях в методе загрузки формы вызываем метод Fill объекта oleDbDataAdapter1 (или oleDbDataAdapter1 ) и передаем ему в качестве параметра dsCustomer1. Опять же, говоря образно, мы "заливаем" данные из адаптера в DataSet, который затем распоряжается ими, — здесь мы определили, что DataSet выступает в качестве источника данных для dataGrid1.

Запустите приложения. Щелкните на знак (+), а затем на ссылку Customer. Готовые приложения будут иметь следующий вид (рис. 4.40 и рис. 4.41):

Готовое приложение VisualDataMDB

Рис. 4.40. Готовое приложение VisualDataMDB
Готовое приложение VisualDataSQL

Рис. 4.41. Готовое приложение VisualDataSQL

На диске, прилагаемом к книге, вы найдете эти приложения (Code\Glava4\VisualDataMDB и Code\Glava4\VisualDataSQL).

Елена Дьяконова
Елена Дьяконова

При нажатии на Сумма в примере ArbitraryMethod из Лекция 7, VS 2013 выдается ошибка: 

Необработанное исключение типа "System.InvalidOperationException" в System.Windows.Forms.dll

Дополнительные сведения: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "lblResult" не из того потока, в котором он был создан.

Затем:

Необработанное исключение типа "System.InvalidOperationException" в mscorlib.dll

Дополнительные сведения: Для каждой асинхронной операции метод EndInvoke может вызываться только один раз.

Александр Сороколет
Александр Сороколет

Свойство WindowState формы blank Maximized. Не открывается почемуто на всё окно, а вот если последующую форму бланк открыть уже на макс открывается :-/

Иван Циферблат
Иван Циферблат
Россия, Таганрог, 36, 2000