Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ПИ_ИКТ Программирование по С++ (1 семестр) _Хотов.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
5.83 Mб
Скачать

Удаление записей из таблицы базы данных с использованием sql-запроса и объекта класса Command

Можно также удалять записи (строки из таблицы БД), формируя в программном коде соответствующий SQL-запрос, передаваемый в объект класса Command. Имен­но объект Command обеспечивает привязку SQL-выражения к соединению с базой данных. Напишем самый простой пример такой программы.

В данном случае экранная форма нам не нужна, поэтому выберем, как и в не­которых предыдущих примерах, шаблон консольного приложения. Запустим Visual Studio 2010 и в окне New Project выберем в среде CLR узла Visual C+ + приложение шаблона Console Application CLR. Чтобы иметь доступ к функции MessageBox::Show, добавим к проекту ссылку на динамическую библиотеку Forms.dll. Для этого выберем пункты меню Project ► Properties ► Add Reference и на вкладке .NET дважды щелкнем по ссылке на библиотеку System.Windows.Forms.dll. Отметим, что при этом в окне Referenses среди ссылок References появится соответствующая этой библиотеке ссылка.

Далее напишем программный код из листинга 9.

Листинг 9. Удаление записей из таблицы БД

// БдУдаленЗаписи.cpp: главный файл проекта.

// Программа удаляет запись из таблицы БД с использованием SQL-запроса

// и объекта класса Command

#include "stdafx.h"

using namespace System;

// Для вызова MessageBox добавим в наш проект пункты меню:

// Project⴬Add Reference и на вкладке .NET дважды щелкнем по ссылке

// System.Windows.Forms.dll, а в тексте программы добавим директиву:

using namespace System::Windows::Forms;

int main(array<System::String ^> ^args)

{

// Создаем объект Connection и передаем ему строку подключения

auto Подключение = gcnew Data::OleDb::

OleDbConnection( // Строка подключения:

"Data Source=\"C:\\vic.mdb\";User " +

"ID=Admin;Provider=\"Microsoft.Jet.OLEDB.4.0\";");

Подключение->Open();

// Создаем объект класса Command, передавая ему SQL-команду

auto Команда = gcnew Data::OleDb::OleDbCommand(

"Delete * From [БД телефонов] Where " +

"ФИО Like ‘Vi%’", Подключение);

// Выполнение команды SQL

int i = Команда->ExecuteNonQuery();

// i - количество удаленных записей

if (i > 0) MessageBox::Show(

"Записи, содержащие в поле ФИО фрагмент 'Vi*', удалены");

if (i == 0) MessageBox::Show(

"Запись, содержащая в поле ФИО фрагмент 'Vi*', не найдена");

Подключение->Close();

return 0;

}

Здесь при создании объекта класса Command задан SQL-запрос на удаление (Delete) всех записей, содержащий в поле ФИО фрагмент текста Vi*, причем строч­ные и прописные буквы являются равнозначными, то есть будут удалены записи, содержащие Vi*, vi*, VI* и прочие комбинации. Таким образом, поиск записей ве­дется без учета регистра (case-insensitive search).

Замечу, что здесь для выполнения команды SQL использован метод ExecuteNonQuery. Он возвращает в переменную i количество удаленных записей. Если i = 0, значит, записей с таким контекстом не найдено, и ни одна запись не удалена.

Убедиться в работоспособности программы можно, открыв решение БдУдаленЗаписи.sln в папке БдУдаленЗаписи.

Лабораторная работа № 25. Работа с базой данных Цель работы:

Овладеть навыками разработки приложений обработки баз данных