Member 14630006 Ответов: 1

Как отобразить изображения вложений от доступа к БД в элемент управления PictureBox


я пытаюсь отобразить изображение из базы данных
Attachments
в picturebox но я получаю ошибку на
ImageByte = (byte[]) vcom.ExecuteScalar();
это говорит
Unable to cast object of type 'System.String' to type 'System.Byte[]'.


Что я уже пробовал:

            byte[] ImageByte = null;
            MemoryStream MemStream = null;
         
                     OleDbConnection cn = new OleDbConnection();
                     cn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:/ALL/Database7.accdb";

            cn.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = cn;
            string sql = "select Attachments from Contacts where ID = 1";
        OleDbCommand vcom = new OleDbCommand(sql, cn);

ImageByte = (byte[]) vcom.ExecuteScalar();
    MemStream = new MemoryStream(ImageByte);
    pictureBox1.Image = Image.FromStream(MemStream);

            cn.Close();

1 Ответов

Рейтинг:
2

Richard MacCutchan

То ExecuteScalar() метод возвращает объект (в данном случае строку), и вы не можете привести его к a byte[] Вам нужно принять строку и преобразовать ее в исходную форму. Как это происходит Attachments столбец, определенный в вашей базе данных? Это должен быть большой двоичный объект или что-то подобное для хранения массива байтов.


Member 14630006

У вас есть какой-нибудь пример?

Richard MacCutchan

Нет, но Google, скорее всего, найдет вам его.

Member 14630006

нет не нашел ничего подходящего

Richard MacCutchan

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