Чтение всех записей из таблицы БД MS Access на консоль с помощью объектов классов Command и datareader 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Чтение всех записей из таблицы БД MS Access на консоль с помощью объектов классов Command и datareader



Напишем программу, которая при минимальном количестве строк программного кода выводит на экран все записи (то есть все строки) таблицы базы данных. При этом воспользуемся наиболее современной технологией ADO.NET. Нам понадо­бятся четыре объекта. Объект Connection обеспечивает соединение с базой данных. Объект Command обеспечивает привязку SQL-выражения к соединению с базой данных. А с помощью объектов DataSet и DataReaders можно просмотреть резуль­таты запроса.

Мы рассмотрим четыре основных действия над базой данных: Select (выборка записей из таблицы БД), Insert (вставка записей), Update (модификация записей в таблице БД), Delete (удаление некоторых записей из таблицы).

Запустим Visual Studio 2010 и в окне New Project выберем в среде CLR узла Visual C++ приложение шаблона Console Application CLR. Зададим имя данного про­екта БДDataReader. Нам нужно вывести на экран самым простым способом таблицу. Если мы будем выводить ее при помощи функции MessageBox::Show, то ровных колонок в окне MessageBox::Show мы не получим, поскольку буквы, используемые в этой функции, имеют разную ширину. Обычно в таком случае для вывода таблиц используют шрифт Courier New или Consolas, но объект MessageBox не содержит возможностей смены шрифта. Поэтому мы пойдем по самому короткому пути и выведем таблицу из базы данных на консоль, то есть на черный экран DOS. В этом случае у нас реализуется моноширнный шрифт, в котором все символы имеют одинаковую ширину. Например, буква «Ш» и символ «.» (точка) имеют одинаковую ширину, следовательно, колонки в построенных таблицах будут ров­ными.

Теперь на вкладке программного кода напишем текст из листинга 2.

Листинг 2. Чтение всех записей из таблицы БД MS Access и вывод их на консоль

// БДDataReader1.cpp: главный файл проекта.

// Программа читает все записи из таблицы БД MS Access и выводит их

// на консоль с помощью объектов Command и DataReader

#include "stdafx.h"

using namespace System;

// Добавляем эту директиву для краткости выражений:

using namespace System::Data::OleDb;

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

{

// Задаем цвет текста на консоли для большей выразительности:

Console::ForegroundColor = ConsoleColor::White;

// Создаем объект класса Connection

auto Подключение = gcnew OleDbConnection();

// Передаем ему строку подключения:

Подключение->ConnectionString = "Data Source=\"C:\\vic.mdb\";User " +

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

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

// Создаем объект класса Command:

auto Команда = gcnew OleDbCommand();

Команда->Connection = Подключение;

// Передаем ему SQL-команду:

Команда->CommandText = "Select * From [БД телефонов]";

// Выбрать все записи и сортировать их по колонке "ФИО":

// Команда->CommandText = "Select * From [БД телефонов] order by ФИО";

// Аналогично по колонке "Номер п/п":

// Команда->CommandText =

// "Select * From [БД телефонов] ORDER BY 'Номер п/п'";

// Выполняем SQL-команду:

OleDbDataReader ^ Читатель = Команда->

ExecuteReader(System::Data::CommandBehavior::CloseConnection);

Console::WriteLine("Таблица БД:\n");

while (Читатель->Read() == true)

// Цикл, пока не будут прочитаны все записи.

// Читатель->FieldCount - количество полей в строке.

// Здесь три поля: 0, 1 и 2.

// Минус прижимает строку влево:

Console::WriteLine("{0,-3} {1,-15} {2,-15}", Читатель->GetValue(0),

Читатель->GetValue(1), Читатель->GetValue(2));

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

// Приостановить выполнение программы до нажатия какой-нибудь клавиши:

Console::ReadKey();

return 0;

}

 

Как видно из программного кода, вначале мы создаем объект Подключение клас­са Connection и передаем ему строку подключения. В строке подключения полный доступ к mdb-файлу заключен в двойные кавычки. Это сделано для того, чтобы корректно читались длинные имена папок и файлов, содержащие пробелы.

Далее создаем объект класса Command и передаем ему простейшую SQL- команду:

Select * From [БД телефонов]

то есть выбрать все записи из таблицы [БД телефонов]. Название таблицы в SQL- запросе заключено в квадратные скобки из-за пробела в имени таблицы. Заметьте, что в комментарии указаны возможные варианты SQL-запроса: сортировать за­писи по колонке ФИО (ORDER BY ФИО) и по колонке Номер п/п (ORDER BY 'Номер п/п').

Затем, используя объект класса DataReader, выполняем SQL-команду. Далее в цикле построчно читаем таблицу базы данных. При работе DataReader в памяти хранится только одна строка (запись) данных. Объект класса DataReader имеет Бу­леву функцию Read, которая возвращает true, если существует следующая строка данных, и false, если такие строки (записи) уже исчерпались. Причем с помощью DataReader невозможно заранее узнать количество записей в таблице.

Результат работы программы показан на рис. 7.

Рис. 7. Отображение таблицы базы данных на консоли

 

Таким образом, мы получили простейшую программу для просмотра таблицы базы данных. С ее помощью можно только просматривать данные, но нельзя их редактировать.

Убедиться в работоспособности программы можно, открыв соответствующее решение в папке БДDataReader.

 

 



Поделиться:


Последнее изменение этой страницы: 2016-12-11; просмотров: 631; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.237.189.116 (0.005 с.)