Файл: Справочник для опытных и как пособие для начинающих программистов. Компактдиск содержит исходные коды примеров из книги.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 958

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
mdb средствами Access пакета MS Office. Поясню сразу, что реальный положительный эффект от решения какой-либо задачи информатизации с использованием баз данных можно ощутить, если коли чество записей (т. е. количество строк в таблице) превышает 100 тысяч. В этом случае очень важным (решающим) фактором оказывается скорость выборки. Однако для примера работы мы будем оперировать совсем маленькой БД. Чтобы читатель данной книги смог реально повторить наши действия, создадим базу данных телефонов ваших контактов.



Рис. 10.5. Заполнение таблицы базы данных в среде MS Access

Структура (поля) таблицы будет сдующей: Номер п/п, ФИО и Номер телефона. Для этого запустим на компьютере офисное приложение Microsoft Access, далее в меню Создать выберем команду Новая база данных (или нажимаем комбинацию клавиш <Ctrl>+<N>), зададим папку для размещения БД и имя файла— vic.mdb. Затем в появившемся окне viс: база данных выберем команду Создание таблицы в режиме конструктора. Далее зададим три поля (т. е. три колонки в будущей таблице): имя первого поля — Номер п/п, тип данных — Счетчик; следующее имя поля — ФИО, тип данных — Текстовый; третье имя поля — Номер телефона, тип данных — Текстовый.

При сохранении структуры таблицы появится запрос на имя таблицы, укажем: БД телефонов. В БД может быть несколько таблиц, а данную таблицу мы назвали именно так. Заметьте, что при работе в обычных приложениях, если вы решили отказаться от внесенных изменений в документе, то его просто закрывают без со­хранения. Однако при работе с БД все изменения сохраняются на диске без нашего ведома. Запись на диск происходит напрямую, минуя операционную систему.

Далее двойной щелчок в пределах созданной таблицы — и приступаем к ее за­полнению. В нашем примере в таблице всего семь записей (рис. 10.5).

Теперь закроем СУБД Access и откроем созданную нами таблицу БД vic.mdb в среде Visual Studio 2010.

Пример 65. Редактирование таблицы базы иных MS Access в среде Visual Studio без написания программного кода

Запупкаем Visual Studio 2010, однако далее мы не заказываем новый проект. Сейчас наша цель — открыть созданную нами базу данных в среде Visual Studio. Для этого выберем пункт меню View | Server Explorer. Здесь, щелкнув правой кнопкой мыши на значке
Data Connections, выберем пункт Add Connection и в качестве источника данных (Data source), нажав кнопку Change, Microsoft Database File (OLE DB). Далее с помощью кнопки Browse зададим путь и например C:\vic.mdb. Теперь проверим подключение— кнопка Test Connection. Успешное подключение выдаст сообщение, представленное на рис. 10.6



Рис. 10.6. Тестирование подключения

Проверка подключения выполнена, щелкнем на кнопке ОК. Теперь в окне Server Explorer раскроем узлы, символизирующие базу данных, таблицы, поля в таблице.



Рис. 10.7. Редактирование таблицы базы данных в среде Visual Studio

Далее щелкнем правой кнопкой мыши на узле БД телефонов и выберем команду Retrieve Data. В результате в правом окне получим содержимое этой таблицы как показано на рис. 10.7. Здесь данную таблицу мы можем редактировать, т.е. изменять содержимое любой записи (Update), добавлять новые записи (Insert), т.е. новые строки в таблицу, удалять записи (Delete). Кроме того, щелкая правой кнопкой мыши в пределах таблицы и выбирая в контекстном меню пункты Panel SQL, можно осуществлять SQL-запросы к базе данных, в том числе наиболее часто используемый запрос Select.

Пример 66. Отображение таблицы базы данных MS Access в экранной форме

Поставим задачу вывода таблицы базы данных MS Access в экранную форму с возможностью редактирования базы данных, как мы это сделали для базы данных SQL Server. Разница будет состоять лишь в том, что мы не будем копировать базу данных в наш проект, а подключимся к существующей базе данных. Сразу скажу, что данная задача решается аналогично.

Запустим Visual Studio 2010 и закажем новый проект шаблона Windows Forms Application С#, укажем имя проекта— БД_mdb. Откроется новый проект Windows Forms. В пункте меню Data (Данные) щелкнем на пункте Add New Data Source, при этом запустится Data Source Configuration Wizard (Мастер настройки источников данных). Выберем Database (База данных) и нажмем кнопку Next. Да­лее после выбора модели Dataset и нажатия кнопки Next нажмем кнопку New Connection (Новое подключение).

Откроется диалоговое окно Add Connection (Добавить подключение). В этом диалоговом окне проверим, является ли источник данных (

Data source) Microsoft Access Database File (OLE DB). Если нет, то нажмем кнопку Change и выберем Microsoft Access Database File в диалоговом окне Change Data Source, а затем нажмем кнопку ОК.

Щелкнув на кнопке Browse, перейдем в место сохранения базы данных vic.mdb, далее щелкнем на значке файла базы данных и на кнопке Открыть. На­жмем кнопку ОК, чтобы закрыть диалоговое окно Add Connection, затем в масте­ре настройки источников данных нажмем кнопку Next. Если будет предложено копировать файл данных в проект, нажмем кнопку Нет.

Опять нажмем кнопку Next. На следующей странице мастера необходимо уста­новить флажок возле всех объектов базы данных, при этом имя объекта DataSet будет vicDataSet. Нажмем кнопку Finish для продолжения. Перейдя в меню Data | show Data Sources, получим в окне Data Sources узлы объектов базы, показанные на рис. 10.8.

Теперь перетащим узел БД телефонов из окна Data Source в проект экранной формы, при этом можно использовать метод копирования — вставки (<Ctrl>+<C>, <Ctrl>+<V>). Заметьте, что некоторые элементы управления автоматически добавятся в форму, также будут созданы некоторые компоненты и добавлены в область компонентов под формой. Появится элемент управления DataGridView, который будет отображать строки и столбцы таблицы, и элемент управления для переходе (AddressesBindingNavigator). Кроме того, система создает компоненты, которые подключаются к базе данных, управляют извлечением и обновлением данных хранят данные в локальном объекте DataSet (AddressesBindingSource, Addresses. TableAdapter и FirstDatabaseDataSet соответственно).

Нажмем клавишу <F5> для запуска приложения. Данные из таблицы телефонов отображаются в элементе управления DataGridView в форме, как показано на рис. 10.9.



Рис. 10.8. Узлы объектов базы данных



Рис. 10.9.Отображение таблицы на элементе управления DataGridView

Можно использовать элементы управления в BindingNavigator в верхней части формы для перехода между строками, можно даже добавлять или удалять записи а также изменять записи, изменяя данные, отображаемые в сетке, но эти изменения не будут сохранены до тех пор, пока не будет нажата кнопка сохранения (
Save Data).

Как видите, мы не написали ни одной строчки программного кода. Среда Visual Studio 2010 автоматически сгенерировала программный код для управления пред­ъявляемой программой. Этот программный код можно просмотреть, открыв файл проекта Form1.Designer.cs.

Убедиться в работоспособности программы можно, открыв файл решения БД_mdb.sln в папке БД_mdb.

Пример 67. Чтение всех записей из таблицы БД MS Access на консоль с помощью объектов классов Commandи DataReader

Напишем программу, которая минимальным количеством строк программного кода выводит на экран все записи (т. е. все строки) таблицы базы данных. При этом воспользуемся наиболее современной технологией ADO.NET. Технология ADO.NET— это преимущественно 4 объекта. Объект Connection обеспечивает соединение с базой данных. Объект Command обеспечивает привязку SQL-выражения к соединению с базой данных. А с помощью объектов DataSet и DataReaders можно просмотреть результаты запроса.

Здесь и далее мы рассмотрим четыре основных действия над базой данных: Select (выборка записей из таблицы БД), Insert (вставка записей), Update (моди­фикация записей в таблице БД), Delete (удаление некоторых записей из таблицы).

Для этого запустим Visual Studio 2010 и щелкнем на пункте New Project. Фор­ма нам в данном случае не нужна, поэтому выберем шаблон Console Application С#. Мы хотим вывести на экран простейшим способом таблицу. Если мы будем выводить ее при помощи функции MessageBox.show, то ровных колонок в окне MessageBox.show мы не получим, поскольку буквы, реализованные в этой функции, имеют разную ширину. Обычно в этом случае для вывода таблиц исполь­зуют шрифт Courier New или Consolas, но объект MessageBox не содержит возмож­ностей смены шрифта. Поэтому, идя по самому короткому пути, выводим таблицу из базы данных на консоль, т. е. на черный экран DOS. Здесь реализован моноши­ринный шрифт, где все символы имеют одинаковую ширину. Например, буква "Ш" и символ "." (точка) имеют одинаковую ширину, следовательно, колонки в постро­енных таблицах будут ровными. Теперь на вкладке Program.cs напишем текст программы из листинга 10.1.


Листинг 10.1. Чтение всех записей из таблицы БД MS Access и вывод их на консоль

//Программа читает все записи из таблицы БД MS Access и выводит их

//на консоль с помощью объектов Command и DataReader

using System;

//Добавляем эту директиву для краткости выражений:

Using ОлеДиБи = System.Data.OleDb;




// Другие директивы using удалены, поскольку они не используются в данной программе

namespace БДDataReader1

{

class Program

{

static void Main(string[] args)

{ // Создаем объект Connection и передаем ему строку подключения

var Подключение = new ОлеДиБи. OleDbConnectionC'Data Source=\"C:\\vic.mdb\" ,-User " +

" ID=Admin; Provider=\ "Microsoft. Jet -OLEDB. 4 . 0 \";") ;

Подключение.Open();

// Создаем объект класса Command, передавая ему" SQL-команду

var Команда = new ОлеДиБи.OleDbCommand("Select * From [БД телефонов]", Подключение);

// Выбрать все записи и сортировать их по колонке "ФИО":

// var Команда = new ОлеДиБи.OleDbCommand(

// "Select * From [БД телефонов] order by ФИО", Подключение);

// Аналогично по колонке "Номер п/п": '

// var Команда = new ОлеДиБи.OleDbCommand(

// "Select * From [БД телефонов] ORDER BY 'Номер п/п'",

// Подключение);

// Выполняем SQL-команду:

ОлеДиБи.OleDbDataReader Читатель = Команда. ExecuteReader(System.Data.CommandBehavior.CloseConnection);

Console.WriteLine("Таблица БД:\n");

while (Читатель.Read() == true)

// Цикл, пока не будут прочитаны все записи.

// Читатель.FieldCount - .кол-во полей в строке.

// Здесь три поля: 0, 1 и 2.

// Минус прижимает строку влево:

Console.WriteLine("{0,-3) {1,-15} {2,-15}", Читатель.GetValue(0) Читатель.GetValue(1), Читатель.GetValue(2) ) ;

Читатель.Close(); Подключение.Close();

// Приостановить выполнение программы до нажатия какой-нибудь клавиш

Console.ReadKey();

}

}

}

Как видно, вначале создаем объект Подключение класса Сonnection и передаем ему строку подключения. В строке подключения полный доступ к mdb-файлу заключен в двойные кавычки. Это сделано для того, чтобы корректно читались длинные имена папок и файлов, содержащие пробелы.

Далее создаем объект класса Сommand и передаем ему простейшую SQL-команду:

Select * From [БД телефонов]

То есть выбрать все записи из таблицы [БД телефонов]. Название таблицы в SQL-запросе заключено в квадратные скобки из-за пробела в имени таблицы. За­метьте, что в комментарии указаны возможные варианты