Технология Microsoft ADO.NET

       

После запуска этой программы выбираем


После запуска этой программы выбираем файл MS Access, пароль к которому нужно подобрать, - и пароль моментально появляется в главном окне (рис. 3.9).


Рис. 3.9.  Вскрытие пароля файла MS Access

Далее нам снова понадобится вводить пароль - чтобы не тратить время, установите снова его значение равным "12345". Займемся теперь подключением к файлу базы данных из приложений. Конечно, вы теперь будете сомневаться, применять ли вообще задание пароля как средство безопасности, но нам в любом случае нужно научиться подключаться даже к такой, "ненадежной" базе. Создайте новый Windows-проект и назовите его "VisualBD_withPassword". Из окна Toolbox перетаскиваем на форму элемент управления DataGrid, его свойству Dock устанавливаем значение "Fill". Переходим на вкладку Data дважды щелкаем на объекте OleDbDataAdapter. В появившемся мастере настраиваем подключение к файлу BD_withPassword.mdb. Теперь в окне "Свойства связи с данными" при проверке соединения появляется сообщение об ошибке (рис. 3.10):


Рис. 3.10.  Ошибка проверки подключения, возникающая при отсутствии пароля

Исходя из текста ошибки, возникает естественное желание снять галочку "Пустой пароль" и в поле пароля ввести "12345". Но и на этот раз возникает ошибка2) (рис. 3.11):


Рис. 3.11.  Ошибка проверки подключения, возникающая при неправильном указании пароля

Дело в том, что интерфейс вкладки "Подключение" предназначен для ввода параметров учетной записи при защите на уровне пользователей. Далее мы рассмотрим ее. Здесь же снова устанавливаем галочку "Пустой пароль" и переходим на вкладку "Все". Дважды щелкаем на свойстве Jet OLEDB:Database Password (или, выделив его, нажимаем на кнопку "Изменить значение"), в появившемся окне "Изменение значения свойства" вводим пароль "12345" (рис. 3.12).




Рис. 3.18.  Определение объектов базы данных, которые будут защищены

Мы добрались до самих рабочих групп. Программа Microsoft Access предлагает несколько рабочих групп, в каждой из которых может быть большое число пользователей. К примеру, пять пользователей могут обладать полными правами, десять - быть разработчиками проекта и еще пять - обладать правами на обновление данных. Код группы также можно не запоминать. Мы выбираем группу "Только чтение", отмечая ее галочкой4), нажимаем кнопку "Далее" (рис. 3.19).


Рис. 3.19.  Выбор рабочей группы

Теперь требуется определить права группы Users. Это группа в любом случае будет входить в файл BDWorkFile.mdw; по умолчанию пользователи, входящие в нее, могут работать с базой данных без всякого пароля. Предоставление каких-либо прав этой группе означает предоставление этих же прав любому пользователю. Поэтому из соображений безопасности Microsoft Access предлагает вариант по умолчанию. Изменение этого варианта означает встраивание "черного" входа в файл рабочей группы. Мы оставляем предложенное значение и нажимаем кнопку "Далее" (рис. 3.20):


Рис. 3.20.  Определение разрешений группы Users

В следующем шаге мастера следует определить пользователей и пароли. Именно эти сведения для каждого пользователя будут постоянно использоваться в работе с приложением, поэтому на них следует обратить внимание. В поле "Пользователь:" вводим "Adonetuser", задаем этому пользователю пароль "12345", нажимаем кнопку "Добавить пользователя в список". Поля "Пользователь" и "Пароль" очищаются, а в списке, расположенном в левой части формы, появляется новая запись. Нажимаем кнопку "Далее" (рис. 3.21).


Рис. 3.21.  Добавление пользователя "Adonetuser"

Итак, теперь у нас уже есть рабочая группа - "Только чтение", и теперь появился пользователь "Adonetuser". Из выпадающего списка "Группа или пользователь" следует выбрать "Adonetuser" и отметить галочкой группу "Только чтение" (рис. 3.22, А). При выборе второго пользователя из выпадающего списка - здесь5) "Chingiz Kariev", - можно заметить, что он входит в группу Admins (рис. 3.22, Б).


Это очень важный момент: должен быть хотя бы один пользователь-администратор, входящий в эту группу, в противном случае после завершения работы мастера мы не сможем добавлять новых пользователей и изменять права существующих!


Рис. 3.22.  Распределение пользователей в рабочие группы. А - включение пользователя "Adonetuser" в группу "Только чтение", Б - вхождение пользователя "Chingiz Kariev" в группу "Admins" по умолчанию

В последнем шаге мастера создается резервная копия базы данных. Она располагается в той же самой директории, где и основная (рис. 3.23). Несмотря на свое расширение - *.bak (backup), это, по сути, обычный файл базы данных Microsoft Access.


Рис. 3.23.  Создание резервной копии базы данных

При нажатии на кнопку "Готово" появляется отчет, создаваемый мастером защиты. Он включает в себя перечень всех сведений, которые в дальнейшем могут понадобиться для восстановления доступа к базе:

Отчет мастера защиты Данный отчет содержит все сведения, необходимые для воссоздания файла рабочей группы и восстановления доступа к защищенной базе данных в случае повреждения. Напечатайте или экспортируйте этот отчет и сохраните его в надежном месте.

Незащищенная база данных: D:\Uchebnik\Code\Glava2\BDwithUsers.bak Защищенная база данных: D:\Uchebnik\Code\Glava2\BDwithUsers.mdb Файл рабочей группы: D:\Uchebnik\Code\Glava2\BDWorkFile.mdw Пользователь: Microsoft Access Организация:

Код рабочей группы: mx4qX5Gy6OGUgwmOZpt

Защищенные объекты: Таблицы: Информация о туристах Оплата Путевки Сезоны Туристы Туры <Новые таблицы и запросы> Запросы: <Новые таблицы и запросы> Формы: <Новые формы> Отчеты: <Новые отчеты> Макросы: <Новые макросы> База данных: Пароль VBE не установлен Группы: Имя: Только чтение Код группы: FecIdp7S4zQTMaV5qAp Users: Adonetuser



Имя: Admins Код группы: <Созданные ранее> Users: Chingiz Kariev

Имя: Users Код группы: <Созданные ранее> Users: Chingiz Kariev Adonetuser



Пользователи: Имя: Chingiz Kariev Личный код: ifXdiQ2D2GaQvBhly Пароль: Группы: Admins

Имя: Adonetuser Личный код: U6QTwfQ5qGu1Djmrbe4 Пароль: 12345 Группы: Только чтение

Имя: admin Личный код: <Созданные ранее> Пароль: S0nxw3IDds5rO Группы: Users

Отчет мастера защиты Дата работы г.

Желательно последовать совету мастера и сохранить эти сведения в надежном месте.

Итак, в результате всех проделанных действий в рабочем каталоге появились три файла - BDwithUsers.bak, BDwithUsers.mdb и BDWorkFile.mdw (рис. 3.24):


Рис. 3.24.  Файлы, полученные в результате работы мастера

В программном обеспечении к курсу вы найдете эти три файла (Code\Glava2\ BDwithUsers.bak, BDwithUsers.mdb и BDWorkFile.mdw).

Файл BDwithUsers.bak тоже лучше сохранить в надежном месте, поскольку он представляет собой незащищенную копию базы данных.

Запускаем файл BDWorkFile.mdw - появляется окно, в котором следует ввести имя пользователя "Adonetuser" и пароль "12345" (рис. 3.25):


Рис. 3.25.  Аутентификация пользователя "Adonetuser"

Открывается окно базы данных, в котором имеющиеся таблицы доступны только для чтения. Выходим из приложения и запускаем его снова. Введем на этот раз имя администратора базы - "Chingiz Kariev", без пароля6) (рис. 3.26).


Рис. 3.26.  Аутентификация пользователя "Chingiz Kariev"

На этот раз база данных открывается с полным доступом, более того, выбрав пункт главного меню "Сервис \ Защита \ Мастер_", можно редактировать уже существующий файл рабочей группы, добавляя например, новых пользователей (рис. 3.27):


Рис. 3.27.  Первый шаг мастера. Изменение файла BDWorkFile.mdw рабочей группы



При создании файла рабочей группы BDWorkFile.mdw мы определили его дальнейшее использование по умолчанию (см. рис. 3.17). Это означает, что вся дальнейшая работа с программой Microsoft Access на данном компьютере будет производиться от имени этого файла и определенных в нем пользователей. Без наличия соответствующих прав будет невозможно создать даже новую базу данных7). Для возврата к файлу рабочей группы, принятому по умолчанию, проделываем следующие действия:

  1. включаем режим отображения скрытых файлов и папок;
  2. открываем базу данных BDwithUsers.mdb от имени администратора (здесь - от имени пользователя "Chingiz Kariev");
  3. в главном меню программы переходим "Сервис \ Защита \ Администратор рабочих групп" (см. рис. 2.7);
  4. появляется окно "Администратор рабочих групп", в котором отображается связь с текущим файлом BDWorkFile.mdw. Нажимаем кнопку "Связь" для смены рабочего файла (рис. 3. 28):


    Рис. 3.28.  Окно "Администратор рабочих групп"

  5. в появившемся окне "Файл рабочей группы" нажимаем кнопку "Обзор". Переходим в директорию C:\Documents and Settings\ Имя пользователя (здесь - Chingiz Kariev)\Application Data\ Microsoft\Access и выбираем файл System.mdw. Это файл рабочей группы, который программа использует с момента своей установки. Нажимаем кнопку "Открыть". В окне "Файл рабочей группы" нажимаем "OK". Появляется уведомление "Успешное присоединения файла рабочей группы" (рис. 3.29):


    Рис. 3.29.  Уведомление присоединения файла рабочей группы

  6. нажимаем кнопку "OK" - теперь в окне "Администратор рабочих групп" отображается связь с файлом по умолчанию "System.mdw". Нажимаем "OK" для завершения (рис. 3.30):


    Рис. 3.30.  Связь с файлом System.mdw в окне "Администратор рабочих групп"



В результате проделанных операций мы вернулись к файлу рабочей группы, принятому по умолчанию. Теперь при создании новых баз данных снова будем работать от имени администратора "Admin".


Однако мы не сможем открыть базу данных BDwithUsers.mdb, использующую другой файл рабочей группы (рис. 3.31):


Рис. 3.31.  Попытка открыть базу данных BDwithUsers.mdb

Для открытия базы данных нам снова нужно будет связаться со своеобразным электронным ключом - файлом BDWorkFile.mdw. Сделайте это самостоятельно.

Для распространения подготовленной базы данных на компьютеры пользователей вам потребуется скопировать сам файл базы данных и файл рабочей группы, а затем связать их.

Изменим пароль администратора "Chingiz Kariev" базы BDwithUsers.mdb. Открываем от имени этого пользователя базу данных, в главном меню переходим "Сервис \ Защита \ Пользователи и группы_" (см. рис. 3.7). В появившемся окне "Пользователи и группы" из выпадающего списка "Имя" выбираем этого пользователя, переходим на вкладку "Изменение пароля". Оставляя пустым поле "Текущий пароль", вводим и подтверждаем пароль "a1s2d3f4g5h6j7k8l9z0" (рис. 3.32):


Рис. 3.32.  Изменение пароля администратора базы данных

Аналогично, открывая базу от имени пользователя "Adonetuser", можно изменить его пароль.

Может показаться, что вся эта продуманная система разделения пользователей предоставляет надежную безопасность создаваемым приложениям. Но это не так - вся информация по-прежнему хранятся в незашифрованном виде в файле рабочей группы. Достаточно получить к этому файлу доступ - а для работы самой базы данных это необходимое условие, - чтобы получить все сведения о пользователях и их паролях. Утилита Access Password (http://www.thegrideon.com) позволяет считывать все данные (рис. 3.33):


увеличить изображение
Рис. 3.33.  Вскрытие учетных записей пользователей MS Access

С помощью утилиты просмотрим также содержимое файла System.mdw. Здесь мы видим всего одного пользователя "admin"с пустым паролем, обладающего правами администратора (рис. 3.34):




увеличить изображение
Рис. 3.34.  Просмотра файла System.mdw

Именно от этого пользователя по умолчанию мы начинаем работать с MS Access после установки пакета Microsoft Office.

Займемся подключением к базе из приложений. Создайте новый Windows-проект и назовите его "VisualBDwithUsers". Добавляем на форму элемент управления DataGrid, его свойству Dock устанавливаем значение "Fill". Переходим на вкладку Data панели инструментов Toolbox, дважды щелкаем на объекте OleDbDataAdapter. В появившемся мастере настраиваем подключение к базе BDwithUsers.mdb, в поле "Пользователь" вводим "Adonetuser", в поле "Пароль" - значение "12345". Но при проверке подключения снова появляется сообщение об ошибке (рис. 3.35):


Рис. 3.35.  Ошибка при проверке подключения к базе "BDwithUsers.mdb"

В чем же дело? Мы ведь ввели все значения в специально предназначенные для этого поля! Интерфейс вкладки "Подключение" снова не предоставляет возможности ввода всех нужных сведений для подключения. Переходим на вкладку "Все", выделяем свойство "Jet OLEDB:System database" и нажимаем кнопку "Изменить значение" (можно также дважды щелкнуть на этом свойстве). В появившемся окне "Изменение значения свойства" указываем путь к файлу BDWorkFile.mdw вместе с его полным названием (включающим расширение файла) (рис. 3.36).


увеличить изображение
Рис. 3.36.  Определение значение свойства "Jet OLEDB:System database"

Переходим на вкладку "Подключение", проверяем связь с базой - на этот раз проверка будет успешной (рис. 3.37).


Рис. 3.37.  Успешная проверка подключения к базе "BDwithUsers.mdb"

Нажимаем кнопку "OK" для закрывания окна "Свойства связи с данными". Теперь появляется дополнительное окно, в котором следует повторно ввести пароль пользователя (рис. 3.38).


Рис. 3.38.  Дополнительно окно подключения к базе данных

В этом окне заметно "обрезанное" расположение подписей полей: это можно считать недоработкой VS 2003 - даже при разрешении экрана 1280х1024 форма выглядит так же.


Дополнительно в выпадающем списке " Режим открытия" выбираем значение DB_MODE_READ, поскольку пользователь "Adonetuser" обладает правами только на чтение данных. Закрываем это окно, завершаем работу мастера, настраивая извлечение всех записей из таблицы "Туристы". В последнем шаге мастера оставляем включение пароля в строку connection string (см. рис. 3.14).

На панели компонент формы выделяем объект DataAdapter, переходим в его окно Properties и нажимаем на ссылку Generate dataset. Оставляем название объекта DataSet, предлагаемое по умолчанию. В конструкторе формы заполняем объект DataSet, а также определяем источник данных для элемента DataGrid:

public Form1() { InitializeComponent(); oleDbDataAdapter1.Fill(dataSet11); dataGrid1.DataSource = dataSet11.Tables[0].DefaultView; }

Запускаем приложение. На форму снова выводятся данные из базы (см. рис. 3.15).

В программном обеспечении к курсу вы найдете приложение VisualB DwithUsers (Code\Glava2\ VisualBDwithUsers).

Сделаем точно такое же приложение без использования визуальных средств студии. Создайте новый Windows-проект, назовите его "ProgrammBDwithUsers". Добавляем на форму элемент управления DataGrid, его свойству Dock устанавливаем значение "Fill". Подключаем пространство имен для работы с базой:

using System.Data.OleDb;

В классе формы создаем строки connectionString и commandText:

string connectionString = @"Provider=""Microsoft.Jet.OLEDB.4.0" ";Data Source=""D:\Uchebnik\Code\Glava2\BDwithUsers.mdb" ";Jet OLEDB:System database=""D:\Uchebnik\Code\Glava2 \BDWorkFile.mdw"";User ID=Adonetuser;Password=12345;";

string commandText = "SELECT * FROM Туристы";

В конструкторе формы создаем все объекты ADO .NET:

public Form1() { InitializeComponent(); OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = connectionString; OleDbDataAdapter dataAdapter = new OleDbDataAdapter(commandText, conn); DataSet ds = new DataSet(); dataAdapter.Fill(ds); dataGrid1.DataSource = ds.Tables[0].DefaultView; conn.Close(); }

В программном обеспечении к курсу вы найдете приложение ProgrammBDwithUsers (Code\Glava2\ ProgrammBDwithUsers).


Содержание раздела