Шаг 91.
Microsoft Visual C++ 2010. Начала. Базы данных. База данных Microsoft Access. Выбор информации из базы данных. SQL-запрос SELECT (окончание)

    На этом шаге мы рассмотрим пример использования этого SQL-запроса.

    Процесс выборки информации из базы данных с использованием SQL-запроса с параметром демонстрирует программа "Контакты-2" (ее форма приведена на рисунке 1).


Рис.1. Форма программы "Контакты-2"

    Программа "Контакты-2" создается путем модернизации программы "Контакты": на форму надо добавить поле редактирования и командную кнопку. Кроме того, надо изменить настройку компонента OleDbDataAdapter (таблица 1).

Таблица 1. Значения свойств компонента OleDbDataAdapter
Свойство Значение
SelectCommand.Connection oleDbConnection1
SelectCommand.CommandText SELECT *
  FROM contacts
  WHERE name LIKE ?
SelectCommand.Parameters[0].ParameterName name
SelectCommand.Parameters[0].SourceColumn name
SelectCommand.Parameters[0].Value %%

    Функции обработки событий приведены в тексте ниже. Выбор информации из базы данных выполняет функция обработки события Click для кнопки Найти. Она формирует SQL-запрос и направляет его серверу.

// Начало работы программы 
private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
		 // Так как у команды SELECT есть параметр, 
		 // который задает критерий отбора записей, 
		 // то надо задать его значение: 
		 // oleDbDataAdapter1->SelectCommand->Parameters[0]->Value = "%%"; 
		 // прочитать данные из БД - выполнить команду SELECT 
		 oleDbDataAdapter1->Fill(dataTable1); 
	 }
// Пользователь выделил строку и нажал клавишу Delete
private: System::Void dataGridView1_UserDeletingRow(System::Object^  sender, 
			 System::Windows::Forms::DataGridViewRowCancelEventArgs^  e) {
             System::Windows::Forms::DialogResult dr = 
				 MessageBox::Show("Удалить запись?", 
				 "Удаление записи", 
				 MessageBoxButtons::OKCancel, 
				 MessageBoxIcon::Warning, 
				 MessageBoxDefaultButton::Button2); 
			 if (dr == System::Windows::Forms::DialogResult::Yes) 
			 {
				 e->Cancel = true; 
			 }
	 }
// Завершение работы программы 
private: System::Void Form1_FormClosing(System::Object^  sender, 
			 System::Windows::Forms::FormClosingEventArgs^  e) {
			// Обновить данные 
            oleDbDataAdapter1->Update(dataSet1->Tables["contacts"]);
	 }
// Щелчок на кнопке Найти 
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
		 dataSet1->Clear(); // удалить старые данные 
		 // Для получения информации из базы данных 
		 // используется команда SELECT с параметром: 
		 // SELECT * FROM сontacts WHERE (name Like ?) 
		 // где ? - параметр. 
		 // В программе доступ к параметру можно получить 
		 // по номеру или по имени 
		 oleDbDataAdapter1->SelectCommand->Parameters["name"]->Value = 
			 "%" + textBox1->Text + "%";
		 // выполнить команду 
		 oleDbDataAdapter1->Fill(dataTable1); 
	 }
Архив проекта можно взять здесь.

    На следующем шаге мы рассмотрим работу с базой данных в режиме формы.




Предыдущий шаг Содержание Следующий шаг