Отображать изображения в базе данных Access в WPF и C#

В этом примере показано, как вы можете отображать изображения, хранящиеся в базе данных Access в программе WPF. Вы можете сделать это с помощью связанных элементов управления, но я считаю этот подход менее запутанным, потому что вы делаете все явно в коде.

Когда программа запускается, следующий код подготавливает форму для отображения данных.

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

Этот код объявляет переменную OleDbConnection на уровне класса, чтобы она могла использовать ее во всем коде. Обработчик события Load формы создает строку, содержащую имя базы данных. Затем он создает объект OleDbConnection. В этом примере используется поставщик Microsoft.ACE.OLEDB.12.0, который работает для 64-разрядных систем, таких как мои. Это место, где вам, скорее всего, нужно будет внести изменения в программу.

(Чтобы найти строку подключения, которая работает для вашего компьютера и базы данных, запустите новый проект, откройте меню «Проект» и выберите «Добавить новый источник данных». Подключитесь к базе данных и посмотрите, какая строка подключения будет создана для вас.)

После создания соединения код создает объект OleDbCommand, который выбирает заголовки и связан с объектом соединения. Затем он открывает соединение и вызывает метод команды ExecuteReader для выполнения запроса. Он просматривает результаты, добавляя их в список ListBox программы, закрывает его и закрывает соединение.

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

Этот код создает объект OleDbCommand, связанный с соединением, для выбора данных для выбранного заголовка. Затем он открывает соединение и выполняет метод ExecuteReader команды. Затем он копирует результирующие URL-адреса, данные Year, ISBN и Pages в TextBox es.

Если возвращаемое поле № 6 имеет значение null, запись не имеет изображения. В этом случае код устанавливает свойство imgCover Image элемента управления Изображение в null, чтобы он ничего не отображал.

Если изображение записи не null, программа вызывает метод BytesToImage для преобразования данных байта записи в изображение и отображения результата. Код заканчивается закрытием считывателя и соединения.

В следующем коде показан метод BytesToImage, который наиболее интересен для примера.

Этот метод создает новый объект BitmapImage. Затем он создает MemoryStream, связанный с байтовыми данными, полученными из базы данных.

Он устанавливает позицию потока в начало и вызывает метод BitmapImage BeginInit, чтобы указать, что он собирается установить свойства объекта. Он устанавливает некоторые свойства, а затем устанавливает свойство StreamSource изображения в MemoryStream. Когда код вызывает EndInit, изображение загружается из потока. Затем метод возвращает результат BitmapImage.

Источник: http://csharphelper.com/blog/2015/07/display-images-in-an-access-database-in-wpf-and-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *