#vb.net #ms-access
#vb.net #ms-access
Вопрос:
В настоящее время я пытаюсь это code..im по-прежнему выдается ошибка: параметр недействителен
Я хочу отобразить изображение из базы данных Access, используя vb.net . я сохранил изображение в access в OLE-объекте.. я хочу отобразить его в pictureBox2.text имя столбца в access для изображения: PicFile Я вижу изображение в базе данных в виде длинных двоичных данных, но я не могу отобразить его в VB.net
Private Sub GetImageFrmDB()
Try
Cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UserslenovoDocumentsFinal year stuffBookStoreDb.mdb;")
Cn.Open()
str = "SELECT PicFile FROM Book_data WHERE ISBN='9780486407722'"
Command = New OleDbCommand(str, Cn)
Command.CommandType = CommandType.Text
'Command.Parameters.AddWithValue("@ISBN", Isbn_.Text)
dr = Command.ExecuteReader()
If dr.Read Then
Dim imgByte() As Byte
Try
imgByte = CType(dr("PicFile"), Byte())
Dim stream As New System.IO.MemoryStream(imgByte)
Dim bm As New Bitmap(stream)
stream.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End If
dr.Close()
Cn.Close()
Command.Dispose()
Cn.Dispose()
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Комментарии:
1. в какой строке происходит ошибка? какой тип столбца ISBN?
2. ISBN- Текст.. Я просто имею в виду, чтобы получить image..im не уверен, где возникает ошибка
3. Единственное, что мы можем предположить, это то, что picFile, Book_data или ISBN являются полями или таблицами, которые либо написаны с ошибкой, либо не существуют. Кстати, вы ничего не делаете со своим растровым изображением.
4. Если вы удалите эту строку, в этом методе ничего не произойдет.
5. @user3726806 Загруженный вами файл .mdb содержит единственную таблицу с именем [login], которая не имеет ничего общего с проблемой, которую вы пытаетесь решить с помощью этого вопроса.
Ответ №1:
Код, который вставил данные в поле [PicFile], не сохранил содержимое файла изображения, он сохранил (представление в Юникоде) локальный путь к файлу изображения.
Очевидно, что это недопустимые данные изображения, поэтому попытка преобразовать их с помощью New Bitmap(stream)
или использовать в Image.FromStream(stream)
вызывает ошибку «Параметр недействителен», поскольку stream
(параметр) не содержит байтов, представляющих допустимое изображение.
Итак, вам нужно будет исправить код, который записывает данные изображения в базу данных, прежде чем вы сможете исправить код, который считывает их обратно.