Файл: Справочник для опытных и как пособие для начинающих программистов. Компактдиск содержит исходные коды примеров из книги.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 954
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
программы, например, создалась ли таблица в БД, добавилась ли запись в таблице БД, правильно ли сформирован SQL-запрос. Не обязательно запускать MS Access, чтобы выполнить SQL-запрос или проверить правильность его синтаксиса. Это можно сделать в среде Visual Studio. Для этого в пункте меню View выбираем команду Server Explorer (Обозреватель баз данных), далее в списке подключений указываем полный путь к нужной БД. Затем, щелкая правой кнопкой мыши на значке нужной таблицы, в контекстном меню выбираем пункт Retrieve Data. При этом в панели инструментов (Toolbar) появляется значок SQL, после щелчка по этому значку (или нажатия комбинации клавиш <Ctrl>+<3>) получим окно SQL-запроса. В этом окне мы можем задавать SQL-запрос, а затем, например, щелкая правой кнопкой мыши, либо проверять его синтаксис, либо выполнять.
Убедиться в работоспособности программы можно, открыв решение БдДобавлЗаписи.sln в папке БдДобавлЗаписи.
Пример 71. Чтение всех записей из таблицы базы данных с помощью объектов классов Command, DataReaderи элемента управления DataGridView
Покажем, как легко, очень малой кровью, можно вывести таблицу базы данных элемент управления DataGridView (сетка данных, т. е. таблица данных) с использованием тех же объектов из предыдущей программы классов Сommand и DataReader.
Для решения этой задачи запустим Visual Studio 2010, закажем новый проект New Project шаблона Windows Forms Application С#. Из панели Toolbox добавим в проектируемую форму элемент управления DataGridView и растянем его на всю форму. На вкладке Forml.cs напишем программный код, представленный в листинге 10.5. С'
Листинг 10.5. Чтение всех записей из таблицы БД
// Программа читает все записи из таблицы базы данных с помощью объектов
// Сommand, DataReader и элемента управления DataGridView
using System;
using System.Data;
using System. Windows. Forms ;
// Добавляем эту директиву для краткости выражений:
using ОлеДиБи = System.Data.OleDb;
// Другие директивы using удалены, поскольку они не используются в данной программе
nfmespace BnReaderGridView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Создаем объект Connection и передаем ему строку подключения:
var Подключение = new ОлеДиБи.OleDbConnection( "Data Source=\"C:\\vic.mdb\";User " + "ID=Admin;Provider=\"Microsoft.Jet.OLEDB.4.0\";");
Подключение.Open();
// Создаем объект Command, передавая ему SQL-команду
ОлеДиБи.OleDbCommand Команда = new ОлеДиБи.
OleDbCommand("Select * From [БД телефонов]", Подключение);
// Выполняем SQL-команду
ОлеДиБи.OleDbDataReader Читатель = Команда.
ExecuteReader(); // (CommandBehavior.CloseConnection)
DataTable Таблица = new DataTable();
// Заполнение "шапки" таблицы
Таблица.Columns.Add(Читатель.GetName(0));
Таблица.Columns.Add(Читатель.GetName(1) );
Таблица.Columns.Add(Читатель.GetName(2) ) ;
while (Читатель.Read() == true)
// Заполнение клеток (ячеек) таблицы
Таблица.Rows.Add(new object[] {Читатель.GetValue(0), Читатель.GetValue(1), Читатель.GetValue(2)});
// Здесь три поля: 0, 1 и 2
Читатель.Close(); Подключение.Close();
dataGridViewl.DataSource = Таблица;
}
}
}
Как видно из программы, она очень похожа на предыдущую. После выполнения SQL-команды создаем объект DataTable, который в конце программного кода задаем как источник (DataSource) для сетки данных dataGridView1. Заполняем "шапку" таблицы, т. е. названия колонок, методом Add.
Далее, как и в предыдущей программе, в цикле While заполняем ячейки таблицы. Фрагмент работы программы показан на рис. 10.14.
Рис. 10.14. Отображение таблицы базы данных на элементе DataGridView
В этой таблице мы можем сортировать записи по любой из колонок, щелкая мышью на названиях соответствующих колонок. Можем редактировать (изменять) содержание ячеек, но в базу данных эти изменения не попадут (сохранения не будет).
Одно из ключевых преимуществ использования объекта DataReader — это его скорость и небольшое использование памяти. Однако применение циклического считывания данных сводит эти преимущества на нет. Убедиться в работоспособности программы можно, открыв решение БдReaderGridView.sln в папке БдReaderGridView.
Пример 72. Чтение данных из БД в сетку данных DataGridViewс использованием объектов классов Command, Adapterи DataSet
Рассмотрим пример чтения таблицы с помощью объекта Adapter из базы данных посредством выбора нужных данных и передачи их объекту DataSet. Очень удобно прочитать таблицу, записанную в DataSet, используя элемент управления DataGridView (сетка данных, т. е. таблица данных), указав в качестве источника данных для сетки DataGridView объект класса DataSet.
Поскольку нам нужен элемент управления DataGridView, мы создаем новый проект с экранной формой. Для этого, как обычно, запускаем Visual Studio 2010, заказываем новый проект New Project шаблона Windows Forms Application C#. Из панели Toolbox добавляем в форму элемент управления DataGridView растягиваем его на всю форму, как показано на рис. 10.15.
Рис. 10.15. Проектирование экранной формы
Далее пишем программный код, представленный в листинге 10.6.
Листинг 10.6. Чтение данных из БД в сетку данных DataGridView
//Программа читает из БД таблицу в сетку данных DataGridView
//с использованием объектов класса Command, Adapter и DataSet
using System.Data;
using System.Windows.Forms;
// Добавляем эту директиву для краткости выражений:
using ОлеДиБи = System.Data.OleDb;
// Другие директивы using удалены, поскольку они не используются в данной программе
namespace БдАдаптepGridView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Text = "Чтение таблицы из БД:";
var Подключение = new ОлеДиБи.OleDbConnection( "Data Source=\"C:\\vic.mdb\";User " + "ID=Admin;Provider=\"Microsoft.Jet.OLEDB.4.0\";");
Подключение.Open();
var Команда = new ОлеДиБи.OleDbCommand("Select * From [БД-телефонов]", Подключение);
// var Команда = new ОлеДиБи.01eDbCommand("SELECT * FRO" +
// "M [БД телефонов] WHERE (фио LIKE 'м%')", Подключение);
// Создаем объект Adapter и выполняем SQL-запрос
var Адаптер = new ОлеДиБи.OleDbDataAdapter(Команда);
// Создаем объект класса DataSet
DataSet НаборДанных = new DataSet();
// Заполняем DataSet результатом SQL-запроса
Адаптер.Fill(НаборДанных, "БД телефонов");
// Содержимое DataSet в виде строки XML для отладки:
string CтpoкaXML = НаборДанных.GetXml();
// Указываем источник данных для сетки данных:
dataGridViewl.DataSource = НаборДанных;
// Указываем имя таблицы в наборе данных:
dataGridViewl.DataMember = "БД телефонов";
Подключение.Close();
}
}
}
Как видно из текста программы, вначале создаем объект класса Connection, передавая строку подключения. Затем, создавая объект класса Сommand, задаем SQL - команду выбора всех записей из таблицы БД телефонов. Здесь мы можем задать любую SQL-команду, в комментарии приведен пример такой команды, которая содержит select и like: выбрать из таблицы БД телефонов только записи, в которых поле ФИО начинается на "м". Оператор like используется для поиска по шаблону (pattern matching) вместе с символами универсальной подстановки (метасимволами) "звездочка" (*) и "знак вопроса" (?). Строка шаблона заключена в одиночные кавычки. Заметим также, что большинство баз данных использует символ "%" вместо значка "*" в like -выражениях.
Далее при создании объекта класса Adapter выполняем SQL-команду и при выполнении метода Fill заполняем объект класса
DataSet таблицей, полученной в результате SQL-запроса. Затем указываем в качестве источника данных для сетки данных dataGridView1 объект класса DataSet. Этого оказывается достаточно вывода на экран результатов SQL-запроса (рис. 10.16).
Рис. 10.16. Вывод результата SQL-запроса
Так же как и при использовании объекта класса DataReader в предыдущем ере, в полученной таблице мы можем сортировать записи по любой из коло-Можем редактировать (изменять) содержание ячеек, но в базу данных эти из-ния не попадут (сохранения не будет).
Заметим, что здесь с помощью визуального проектирования выполнено только перетаскивание в форму сетки данных DataGridView, остальное сделано программно, что обеспечивает большую гибкость программы.
Убедиться в работоспособности программы можно, открыв решение БдАдаптерGridView.sln в папке БдАдаптерGridView.
Пример 73. Обновление записей в таблице базы данных MS Access
Одним из четырех действий над данными в БД(Select, Insert, Update и Delete) является модификация (Update, обновление) данных. Автор поставил задачу написать маленькую программу для обновления записей в таблице базы данных, но с большим удобством (гибкостью) управления программным кодом.
Рассматриваемая в данном примере программа имеет форму, сетку данных —DataGridView, в которую из базы данных читается таблица при нажатии кнопки Читать из БД. Пользователь имеет возможность редактировать данные в этой таблице, после чего, нажав кнопку Сохранить в БД, данные в базе данных будут модифицированы, т. е. заменены новыми.
Для написания этой программы запускаем Visual Studio 2010, заказываем новый проект New Project шаблона Windows Forms Application C#. Из панели Toolbox добавляем в форму элемент управления DataGridView и две командные кнопки. Программный код программы представлен в листинге 10.7.
Листинг 10.7. Обновление записей в таблице базы данных MS Access
// Программа обновляет записи (Update) в таблице базы данных MS Access
using System;
using System.Data;
using System. Windows . Forms ;
// Добавляем эту директиву для краткости выражений:
using ОлеДиБи = System.Data.OleDb;
// другие директивы using удалены, поскольку они не используются в данной программе
namespace БдUpdate
{
public partial class Form1 : Form
{
DataSet НаборДанных;
ОлеДиБи.OleDbDataAdapter Адаптер;
ОлеДиБи.OleDbConnection Подключение = new ОлеДиБи. 01eDbConnection( // Строка подключения:
"Data Source=\"C:\\vic.mdb\";User " + "ID=Admin;Provider=\"Microsoft.Jet.OLEDB.4.0\";");
ОлеДиБи.OleDbCommand Команда = new ОлеДиБи.OleDbCommand();
public Form1()
{
InitializeComponent();
Button1.Text = "Читать из БД"; button1.Tablndex = 0;
button2.Text = "Сохранить в БД";
}
private void button1_Click(object sender, System.EventArgs e)
{ // Читать из БД:
НаборДанных = new DataSet();
if (Подключение.State == ConnectionState.Closed) Подключение.Open();
Адаптер = new ОлеДиБи. OleDbDataAdapter ( "Select * From [БД телефонов]", Подключение);
// Заполняем DataSet результатом SQL-запроса
Адаптер.Fill(НаборДанных, "БД телефонов");
// Содержимое DataSet в виде строки XML для отладки:
string СтрокаХML = НаборДанных.GetXml();
// Указываем источник данных для сетки данных:
dataGridView1.DataSource = НаборДанных;
// Указываем имя таблицы в наборе данных:
dataGridView1.DataMember = "БД телефонов";
Подключение.Close();
}
private void button2_Click(object sender, System.EventArgs e)
{ // Сохранить в базе данных
Команда.CommandText = "UPDATE [БД телефонов] SET [Ho" +
"мер телефона] = ?, ФИО = ? WHERE ([Номер п/п] = ?)";
// Имя, тип и длина параметра
Команда.Parameters.Add("Номер телефона", ОлеДиБи.OleDbType.VarWChar,
50, "Номер телефона");
Команда.Parameters.Add("ФИО", ОлеДиБи.OleDbType.VarWChar, 50, "ФИО");
Команда. Parameters. Add (new ОлеДиБи.OleDbParameter("Original_HoMep_n_n", ОлеДиБи.OleDbType.Integer, 0, System.Data.ParameterDirection. Input, false, (byte)0, (byte)0, "Номер п/п", System.Data.DataRowVersion.Original, null));
Адаптер.UpdateCommand = Команда;
Команда.Connection = Подключение;
try
{ // Update возвращает количество измененных строк
int kol = Адаптер.Update(НаборДанных, "БД телефонов"); MessageBox.Show("Обновлено " + kol + " записей");
}
catch (Exception Ситуация)
{ MessageBox.Show(Ситуация.Message, "Недоразумение"); }
}
}
}
Как видно, мы имеем две процедуры обработки событий: щелчок на кнопке Читать из БД и щелчок на кнопке Сохранить в БД. Чтобы объекты классов DataSet, DataAdapter, Connection и Command были видны в этих трех процедурах, объявляем эти объекты внешними внутри класса Form1.
При программировании чтения из базы данных вначале с помощью SQL-запpoca мы выбрали все записи из таблицы (Select * From [БД телефонов]) и с помощью объекта класса Adapter поместили в набор данных DataSet. А затем указали объект класса DataSet в качестве источника (DataSource) для сетки данных DataGridview1. Фрагмент работы программы после чтения из базы данных представлен на рис. 10.17.
Убедиться в работоспособности программы можно, открыв решение БдДобавлЗаписи.sln в папке БдДобавлЗаписи.
Пример 71. Чтение всех записей из таблицы базы данных с помощью объектов классов Command, DataReaderи элемента управления DataGridView
Покажем, как легко, очень малой кровью, можно вывести таблицу базы данных элемент управления DataGridView (сетка данных, т. е. таблица данных) с использованием тех же объектов из предыдущей программы классов Сommand и DataReader.
Для решения этой задачи запустим Visual Studio 2010, закажем новый проект New Project шаблона Windows Forms Application С#. Из панели Toolbox добавим в проектируемую форму элемент управления DataGridView и растянем его на всю форму. На вкладке Forml.cs напишем программный код, представленный в листинге 10.5. С'
Листинг 10.5. Чтение всех записей из таблицы БД
// Программа читает все записи из таблицы базы данных с помощью объектов
// Сommand, DataReader и элемента управления DataGridView
using System;
using System.Data;
using System. Windows. Forms ;
// Добавляем эту директиву для краткости выражений:
using ОлеДиБи = System.Data.OleDb;
// Другие директивы using удалены, поскольку они не используются в данной программе
nfmespace BnReaderGridView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Создаем объект Connection и передаем ему строку подключения:
var Подключение = new ОлеДиБи.OleDbConnection( "Data Source=\"C:\\vic.mdb\";User " + "ID=Admin;Provider=\"Microsoft.Jet.OLEDB.4.0\";");
Подключение.Open();
// Создаем объект Command, передавая ему SQL-команду
ОлеДиБи.OleDbCommand Команда = new ОлеДиБи.
OleDbCommand("Select * From [БД телефонов]", Подключение);
// Выполняем SQL-команду
ОлеДиБи.OleDbDataReader Читатель = Команда.
ExecuteReader(); // (CommandBehavior.CloseConnection)
DataTable Таблица = new DataTable();
// Заполнение "шапки" таблицы
Таблица.Columns.Add(Читатель.GetName(0));
Таблица.Columns.Add(Читатель.GetName(1) );
Таблица.Columns.Add(Читатель.GetName(2) ) ;
while (Читатель.Read() == true)
// Заполнение клеток (ячеек) таблицы
Таблица.Rows.Add(new object[] {Читатель.GetValue(0), Читатель.GetValue(1), Читатель.GetValue(2)});
// Здесь три поля: 0, 1 и 2
Читатель.Close(); Подключение.Close();
dataGridViewl.DataSource = Таблица;
}
}
}
Как видно из программы, она очень похожа на предыдущую. После выполнения SQL-команды создаем объект DataTable, который в конце программного кода задаем как источник (DataSource) для сетки данных dataGridView1. Заполняем "шапку" таблицы, т. е. названия колонок, методом Add.
Далее, как и в предыдущей программе, в цикле While заполняем ячейки таблицы. Фрагмент работы программы показан на рис. 10.14.
Рис. 10.14. Отображение таблицы базы данных на элементе DataGridView
В этой таблице мы можем сортировать записи по любой из колонок, щелкая мышью на названиях соответствующих колонок. Можем редактировать (изменять) содержание ячеек, но в базу данных эти изменения не попадут (сохранения не будет).
Одно из ключевых преимуществ использования объекта DataReader — это его скорость и небольшое использование памяти. Однако применение циклического считывания данных сводит эти преимущества на нет. Убедиться в работоспособности программы можно, открыв решение БдReaderGridView.sln в папке БдReaderGridView.
Пример 72. Чтение данных из БД в сетку данных DataGridViewс использованием объектов классов Command, Adapterи DataSet
Рассмотрим пример чтения таблицы с помощью объекта Adapter из базы данных посредством выбора нужных данных и передачи их объекту DataSet. Очень удобно прочитать таблицу, записанную в DataSet, используя элемент управления DataGridView (сетка данных, т. е. таблица данных), указав в качестве источника данных для сетки DataGridView объект класса DataSet.
Поскольку нам нужен элемент управления DataGridView, мы создаем новый проект с экранной формой. Для этого, как обычно, запускаем Visual Studio 2010, заказываем новый проект New Project шаблона Windows Forms Application C#. Из панели Toolbox добавляем в форму элемент управления DataGridView растягиваем его на всю форму, как показано на рис. 10.15.
Рис. 10.15. Проектирование экранной формы
Далее пишем программный код, представленный в листинге 10.6.
Листинг 10.6. Чтение данных из БД в сетку данных DataGridView
//Программа читает из БД таблицу в сетку данных DataGridView
//с использованием объектов класса Command, Adapter и DataSet
using System.Data;
using System.Windows.Forms;
// Добавляем эту директиву для краткости выражений:
using ОлеДиБи = System.Data.OleDb;
// Другие директивы using удалены, поскольку они не используются в данной программе
namespace БдАдаптepGridView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Text = "Чтение таблицы из БД:";
var Подключение = new ОлеДиБи.OleDbConnection( "Data Source=\"C:\\vic.mdb\";User " + "ID=Admin;Provider=\"Microsoft.Jet.OLEDB.4.0\";");
Подключение.Open();
var Команда = new ОлеДиБи.OleDbCommand("Select * From [БД-телефонов]", Подключение);
// var Команда = new ОлеДиБи.01eDbCommand("SELECT * FRO" +
// "M [БД телефонов] WHERE (фио LIKE 'м%')", Подключение);
// Создаем объект Adapter и выполняем SQL-запрос
var Адаптер = new ОлеДиБи.OleDbDataAdapter(Команда);
// Создаем объект класса DataSet
DataSet НаборДанных = new DataSet();
// Заполняем DataSet результатом SQL-запроса
Адаптер.Fill(НаборДанных, "БД телефонов");
// Содержимое DataSet в виде строки XML для отладки:
string CтpoкaXML = НаборДанных.GetXml();
// Указываем источник данных для сетки данных:
dataGridViewl.DataSource = НаборДанных;
// Указываем имя таблицы в наборе данных:
dataGridViewl.DataMember = "БД телефонов";
Подключение.Close();
}
}
}
Как видно из текста программы, вначале создаем объект класса Connection, передавая строку подключения. Затем, создавая объект класса Сommand, задаем SQL - команду выбора всех записей из таблицы БД телефонов. Здесь мы можем задать любую SQL-команду, в комментарии приведен пример такой команды, которая содержит select и like: выбрать из таблицы БД телефонов только записи, в которых поле ФИО начинается на "м". Оператор like используется для поиска по шаблону (pattern matching) вместе с символами универсальной подстановки (метасимволами) "звездочка" (*) и "знак вопроса" (?). Строка шаблона заключена в одиночные кавычки. Заметим также, что большинство баз данных использует символ "%" вместо значка "*" в like -выражениях.
Далее при создании объекта класса Adapter выполняем SQL-команду и при выполнении метода Fill заполняем объект класса
DataSet таблицей, полученной в результате SQL-запроса. Затем указываем в качестве источника данных для сетки данных dataGridView1 объект класса DataSet. Этого оказывается достаточно вывода на экран результатов SQL-запроса (рис. 10.16).
Рис. 10.16. Вывод результата SQL-запроса
Так же как и при использовании объекта класса DataReader в предыдущем ере, в полученной таблице мы можем сортировать записи по любой из коло-Можем редактировать (изменять) содержание ячеек, но в базу данных эти из-ния не попадут (сохранения не будет).
Заметим, что здесь с помощью визуального проектирования выполнено только перетаскивание в форму сетки данных DataGridView, остальное сделано программно, что обеспечивает большую гибкость программы.
Убедиться в работоспособности программы можно, открыв решение БдАдаптерGridView.sln в папке БдАдаптерGridView.
Пример 73. Обновление записей в таблице базы данных MS Access
Одним из четырех действий над данными в БД(Select, Insert, Update и Delete) является модификация (Update, обновление) данных. Автор поставил задачу написать маленькую программу для обновления записей в таблице базы данных, но с большим удобством (гибкостью) управления программным кодом.
Рассматриваемая в данном примере программа имеет форму, сетку данных —DataGridView, в которую из базы данных читается таблица при нажатии кнопки Читать из БД. Пользователь имеет возможность редактировать данные в этой таблице, после чего, нажав кнопку Сохранить в БД, данные в базе данных будут модифицированы, т. е. заменены новыми.
Для написания этой программы запускаем Visual Studio 2010, заказываем новый проект New Project шаблона Windows Forms Application C#. Из панели Toolbox добавляем в форму элемент управления DataGridView и две командные кнопки. Программный код программы представлен в листинге 10.7.
Листинг 10.7. Обновление записей в таблице базы данных MS Access
// Программа обновляет записи (Update) в таблице базы данных MS Access
using System;
using System.Data;
using System. Windows . Forms ;
// Добавляем эту директиву для краткости выражений:
using ОлеДиБи = System.Data.OleDb;
// другие директивы using удалены, поскольку они не используются в данной программе
namespace БдUpdate
{
public partial class Form1 : Form
{
DataSet НаборДанных;
ОлеДиБи.OleDbDataAdapter Адаптер;
ОлеДиБи.OleDbConnection Подключение = new ОлеДиБи. 01eDbConnection( // Строка подключения:
"Data Source=\"C:\\vic.mdb\";User " + "ID=Admin;Provider=\"Microsoft.Jet.OLEDB.4.0\";");
ОлеДиБи.OleDbCommand Команда = new ОлеДиБи.OleDbCommand();
public Form1()
{
InitializeComponent();
Button1.Text = "Читать из БД"; button1.Tablndex = 0;
button2.Text = "Сохранить в БД";
}
private void button1_Click(object sender, System.EventArgs e)
{ // Читать из БД:
НаборДанных = new DataSet();
if (Подключение.State == ConnectionState.Closed) Подключение.Open();
Адаптер = new ОлеДиБи. OleDbDataAdapter ( "Select * From [БД телефонов]", Подключение);
// Заполняем DataSet результатом SQL-запроса
Адаптер.Fill(НаборДанных, "БД телефонов");
// Содержимое DataSet в виде строки XML для отладки:
string СтрокаХML = НаборДанных.GetXml();
// Указываем источник данных для сетки данных:
dataGridView1.DataSource = НаборДанных;
// Указываем имя таблицы в наборе данных:
dataGridView1.DataMember = "БД телефонов";
Подключение.Close();
}
private void button2_Click(object sender, System.EventArgs e)
{ // Сохранить в базе данных
Команда.CommandText = "UPDATE [БД телефонов] SET [Ho" +
"мер телефона] = ?, ФИО = ? WHERE ([Номер п/п] = ?)";
// Имя, тип и длина параметра
Команда.Parameters.Add("Номер телефона", ОлеДиБи.OleDbType.VarWChar,
50, "Номер телефона");
Команда.Parameters.Add("ФИО", ОлеДиБи.OleDbType.VarWChar, 50, "ФИО");
Команда. Parameters. Add (new ОлеДиБи.OleDbParameter("Original_HoMep_n_n", ОлеДиБи.OleDbType.Integer, 0, System.Data.ParameterDirection. Input, false, (byte)0, (byte)0, "Номер п/п", System.Data.DataRowVersion.Original, null));
Адаптер.UpdateCommand = Команда;
Команда.Connection = Подключение;
try
{ // Update возвращает количество измененных строк
int kol = Адаптер.Update(НаборДанных, "БД телефонов"); MessageBox.Show("Обновлено " + kol + " записей");
}
catch (Exception Ситуация)
{ MessageBox.Show(Ситуация.Message, "Недоразумение"); }
}
}
}
Как видно, мы имеем две процедуры обработки событий: щелчок на кнопке Читать из БД и щелчок на кнопке Сохранить в БД. Чтобы объекты классов DataSet, DataAdapter, Connection и Command были видны в этих трех процедурах, объявляем эти объекты внешними внутри класса Form1.
При программировании чтения из базы данных вначале с помощью SQL-запpoca мы выбрали все записи из таблицы (Select * From [БД телефонов]) и с помощью объекта класса Adapter поместили в набор данных DataSet. А затем указали объект класса DataSet в качестве источника (DataSource) для сетки данных DataGridview1. Фрагмент работы программы после чтения из базы данных представлен на рис. 10.17.