Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Обновление записей в таблице базы данных MS Access
Одним из основных четырех действий над данными в БД (Select, Insert, Update и Delete) является модификация (Update, обновление) данных. Автор поставил задачу написать маленькую программу для обновления записей в таблице базы данных, но с большим удобством (гибкостью) управления программным кодом. Рассматриваемая в данном примере программа имеет форму, сетку данных DataGridView, в которую из базы данных считывается таблица при нажатии кнопки Читать из БД. Пользователь имеет возможность редактировать данные в этой таблице, после чего, при нажатии кнопки Сохранить в БД, данные в базе данных будут модифицированы, то есть заменены новыми. Для написания этой программы запустим Visual Studio 2010 и в окне New Project выберем в среде CLR узла Visual C++ приложение шаблона Windows Forms Application Visual C++. Из панели Toolbox добавляем в форму элемент управления DataGridView и две командные кнопки. Программный код представлен в листинге 8. Листинг 8. Обновление записей в таблице базы данных MS Access //............... // Программный код, расположенный выше, создан средой Visual Studio // автоматически, поэтому автором не приводится this->ResumeLayout(false); } #pragma endregion // Программа обновляет записи (Update) в таблице базы данных MS Access // ~ ~ ~ ~ ~ ~ ~ ~ // Объявляем эти переменные вне всех процедур, чтобы // они были видны из любой из процедур: DataSet ^ НаборДанных; OleDb::OleDbDataAdapter ^ Адаптер; OleDb::OleDbConnection ^ Подключение; OleDb::OleDbCommand ^ Команда; private: System:: Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { НаборДанных = gcnew DataSet(); Подключение = gcnew OleDb:: OleDbConnection(// Строка подключения: "Data Source=\"C:\\vic.mdb\";User " + "ID=Admin;Provider=\"Microsoft.Jet.OLEDB.4.0\";"); Команда = gcnew OleDb::OleDbCommand(); button1->Text = "Читать из БД"; button1->TabIndex = 0; button2->Text = "Сохранить в БД"; } private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { // Читать из БД: if (Подключение->State == ConnectionState::Closed) Подключение->Open(); Адаптер = gcnew OleDb::OleDbDataAdapter( "Select * From [БД телефонов]", Подключение); // Заполняем DataSet результатом SQL-запроса Адаптер->Fill(НаборДанных, "БД телефонов"); // Содержимое DataSet в виде строки XML для отладки: String ^ СтрокаXML = НаборДанных->GetXml(); // Указываем источник данных для сетки данных: dataGridView1->DataSource = НаборДанных; // Указываем имя таблицы в наборе данных: dataGridView1->DataMember = "БД телефонов"; Подключение->Close();
} private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { // Сохранить в базе данных Команда->CommandText = "UPDATE [БД телефонов] SET [Но" + "мер телефона] =?, ФИО =? WHERE ([Номер п/п] =?)"; // Имя, тип и длина параметра Команда->Parameters->Add("Номер телефона", OleDb::OleDbType::VarWChar, 50, "Номер телефона"); Команда->Parameters->Add( "ФИО", OleDb::OleDbType::VarWChar, 50, "ФИО"); Команда->Parameters->Add (gcnew OleDb::OleDbParameter("Original_Номер_п_п", OleDb::OleDbType::Integer, 0, System::Data::ParameterDirection:: Input, false, (Byte)0, (Byte)0, "Номер п/п", System::Data::DataRowVersion::Original, nullptr)); Адаптер->UpdateCommand = Команда; Команда->Connection = Подключение; try { // Update возвращает количество измененных строк int kol = Адаптер->Update(НаборДанных, «БД телефонов»); MessageBox::Show("Обновлено " + kol + " записей"); } catch (Exception ^ Ситуация) { MessageBox::Show(Ситуация->Message, "Недоразумение"); } } }; }
Как видно из кода, мы имеем три процедуры обработки событий: загрузки формы, «щелчок на кнопке Читать из БД» и «щелчок на кнопке Сохранить в БД». Чтобы объекты классов DataSet, DataAdapter, Connection и Command были видны в этих трех процедурах, объявляем эти объекты внешними внутри класса Form1. При программировании чтения из базы данных вначале с помощью SQL-запроса мы выбрали все записи из таблицы (Select * From [БД телефонов]) и с помощью объекта класса Adapter поместили в набор данных DataSet. A затем указали объект класса DataSet в качестве источника (DataSource) для сетки данных dataGridView1. Фрагмент работы программы после чтения из базы данных представлен на рис. 14.
Для нас будет представлять интерес программирование модификации записей базы данных. Эта возможность реализуется при обработке события «щелчок мышью на кнопке Сохранить в БД». Здесь свойству CommandText присвоено значение текста SQL-запроса. В качестве заменителей параметров используются вопросительные знаки. В данном SQL-запросе имеют место три вопросительных знака. Им соответствуют три параметра, которые должны указываться строго в порядке следования вопросительных знаков. Эти параметры задаем с использованием метода Parameters->Add. Здесь указываем имя поля (например, «Номер телефона»), тип, длину параметра и значение по умолчанию. Заметим, что третий параметр («Номер п/п») задается как новый, поскольку он не должен подлежать редактированию со стороны пользователя, а будет устанавливаться автоматически, независимо от действий пользователя.
Далее в блоке try...catch вызываем непосредственно метод Update, который возвращает количество (kol) обновленных записей. В случае неудачного обновления обрабатывается исключительная ситуация Exception: объект Exception обеспечивает соответствующее сообщение об ошибке. Убедиться в работоспособности программы можно, открыв решение БдUpdate.sln в папке БдUpdate.
|
|||||||
Последнее изменение этой страницы: 2016-12-11; просмотров: 387; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.231.3.140 (0.009 с.) |