На этом шаге мы рассмотрим пример использования этого SQL-запроса.
Процесс выборки информации из базы данных с использованием SQL-запроса с параметром демонстрирует программа "Контакты-2" (ее форма приведена на рисунке 1).
Рис.1. Форма программы "Контакты-2"
Программа "Контакты-2" создается путем модернизации программы "Контакты": на форму надо добавить поле редактирования и командную кнопку. Кроме того, надо изменить настройку компонента OleDbDataAdapter (таблица 1).
Свойство | Значение |
---|---|
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); }
На следующем шаге мы рассмотрим работу с базой данных в режиме формы.