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

Вызов хранимых процедур. Работа с транзакциями

< Лекция 6 || Лекция 7: 12345 || Лекция 8 >

Хранимые процедуры в Microsoft Access

В завершение этой лекции рассмотрим хранимые процедуры в Microsoft Access. Хранимые процедуры? А разве Microsoft Access их поддерживает? По правде говоря, нет. Мы не можем создавать в MSAccess такие процедуры, как мы это делали в MS SQL Server, синтаксис не будет содержать ключевого слова "PROC" или "PROCEDURE", и вообще, это совсем не так называется! Но база данных способна хранить SQL-запросы, и если их запускать из внешнего приложения, то функциональность уже будет напоминать саму концепцию хранимых процедур.

Открываем базу BDTur_firm2.mdb. В окне базы данных переключаемся на вкладку "Запросы" и дважды щелкаем на заголовке "Создание запроса в режиме конструктора" (рис. 7.14):

 Вкладка "Запросы" в окне базы данных

Рис. 7.14. Вкладка "Запросы" в окне базы данных

В появившемся окне добавления таблицы выбираем "Туристы" и нажимаем кнопку "OK" (рис. 7.15).

 Добавление таблицы

Рис. 7.15. Добавление таблицы

В режиме конструктора требуется установить столбцы, которые будут извлекаться в запросе. Для этого последовательно выбираем из выпадающего списка названия полей таблицы (рис. 7.16).

 Создание запроса

Рис. 7.16. Создание запроса

Добавим сортировку по столбцу "Фамилия". В поле "Сортировка" из выпадающего списка выбираем значение "по возрастанию" (рис. 7.17).

 Задание сортировки

Рис. 7.17. Задание сортировки

Можно просмотреть SQL-конструкцию готового запроса. В главном меню выбираем "Вид \ Режим SQL". Окно конструктора изменяет свой вид - в нем появляется текст запроса:

SELECT Туристы.Кодтуриста, Туристы.Фамилия, Туристы.Имя, Туристы.Отчество
FROM Туристы
ORDER BY Туристы.Фамилия;

Сохраняем запрос, называя его "Сортировка_туристы". Дважды щелкнув на нем в окне базы данных, запускаем - записи таблицы отсортированы (рис. 7.18).

 Запуск готового запроса

Рис. 7.18. Запуск готового запроса

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

using System.Data.OleDb;

В классе формы определяем строку connectionString:

string connectionString = @"Provider=""Microsoft.Jet.OLEDB.4.0"";
 Data Source=""D:\Uchebnik\Code\Glava3\BDTur_firm2.mdb"
 ";User ID=Admin;Jet OLEDB:Encrypt Database=False";

В конструкторе формы создаем объекты ADO .NET, причем в свойстве CommandType объекта Command задаем тип запроса StoredProcedure:

public Form1()
{
	InitializeComponent();
	OleDbConnection conn = new OleDbConnection();
	conn.ConnectionString = connectionString;
	OleDbCommand myCommand = conn.CreateCommand();
	myCommand.CommandType = CommandType.StoredProcedure;
	myCommand.CommandText = "[Сортировка_туристов]";
	conn.Open();
	OleDbDataReader dataReader = myCommand.ExecuteReader();
	while (dataReader.Read())
	{
	// Создаем переменные, получаем для них значения из объекта dataReader,
	//используя метод GetТипДанных
		int TouristID = dataReader.GetInt32(0);
		string Family = dataReader.GetString(1);
		string FirstName = dataReader.GetString(2);
		string MiddleName = dataReader.GetString(3);
		//Выводим данные в элемент llistBox1:
		listBox1.Items.Add("Код туриста: " + TouristID+
		 " Фамилия: " + Family + " Имя: "+
		 FirstName + " Отчество: " + MiddleName);
	}
	conn.Close();
}

Весь код уже достаточно хорошо знаком - мы его применяли для запуска хранимых процедур MS SQL Server. Запускаем приложение - на форму выводится результат запроса (рис. 7.19).

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

Рис. 7.19. Готовое приложение Stored_Procedure_MSAccess

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

< Лекция 6 || Лекция 7: 12345 || Лекция 8 >
Александра Тимофеева
Александра Тимофеева
Украина, Киев
Bakke Aleksander
Bakke Aleksander
Россия, Mуниципальный округ N 4