Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Как рисунок загрузить в SQL-ную базу Добавлено: 19.06.07 11:08  

Автор вопроса:  ДенисЧ
Подсажите пж. как имеющееся изображение (напр. tif файлик) загрузить в существующую SQL базу и потом показать на форме в picturebox.

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Vugar Miriyev



ICQ: 321950466 

Вопросов: 24
Ответов: 28
 Web-сайт: www.novadotnet.com
 Профиль | | #1
Добавлено: 26.06.07 15:35
'Проц для загрузки файла на сревер
Private Sub SavePhoto(ByVal id As Int16)

        Try

            ;Dim cn As New SqlConnection
            ;Dim myStream As Stream
            ;Dim openFileDialog1 As New OpenFileDialog


            cn = SQLProjConnect()
            ;Dim cmd As New SqlCommand("UPDATE Customers SET Photo = @BLOBData WHERE (CustomerID = " & id & ";)", cn)

            ;Dim strBLOBFilePath As String ' "H:\Pictures\010802_imac[1].jpg"



            openFileDialog1.InitialDirectory = "c:\"
            openFileDialog1.Filter = "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF"
            openFileDialog1.FilterIndex = 2
            openFileDialog1.RestoreDirectory = True
            openFileDialog1.Multiselect = False
            If openFileDialog1.ShowDialog() = DialogResult.OK Then
                'myStream = openFileDialog1.OpenFile()
                strBLOBFilePath = openFileDialog1.FileName
                ;Dim fsBLOBFile As New FileStream(strBLOBFilePath, FileMode.Open, FileAccess.Read)

                If Not (fsBLOBFile Is Nothing) Then
                    ' Insert code to read the stream here.
                    'myStream.Close()
                    ;Dim bytBLOBData(fsBLOBFile.Length() - 1) As Byte
                    fsBLOBFile.Read(bytBLOBData, 0, bytBLOBData.Length)
                    fsBLOBFile.Close()
                    ;Dim prm As New SqlParameter("@BLOBData", SqlDbType.VarBinary, _
                        bytBLOBData.Length, ParameterDirection.Input, False, _
                        0, 0, Nothing, DataRowVersion.Current, bytBLOBData)
                    cmd.Parameters.Add(prm)
                    cn.Open()
                    cmd.ExecuteNonQuery()
                    cn.Close()

                End If
            End If
        Catch fillException As System.Exception

            Console.Write(fillException.Message)
            Throw fillException

        Finally
            'Turn constraint checking back on.

        End Try

    End Sub


'Показать фото в пик4ебоске PhotoPB

    Sub LoadPhoto(ByVal DR As DataRow)
        ;Dim bytBLOBData() As Byte
        If IsDBNull(DR("Photo";)) Then
            PhotoPB.Image = Nothing
        Else
            bytBLOBData = DR("Photo";)
            ;Dim stmBLOBData As New MemoryStream(bytBLOBData)
            PhotoPB.Image = Image.FromStream(stmBLOBData)
        End If
    End Sub

Ответить

Номер ответа: 2
Автор ответа:
 ДенисЧ



Вопросов: 25
Ответов: 32
 Профиль | | #2 Добавлено: 27.06.07 10:03
Спасибо за участие Vugar Miriyev, однако при попытке считать картинку из базы пишет invalid parametr на строке PhotoPB.Image = Image.FromStream(stmBLOBData).
Может в базу чет не то пишется?

Ответить

Номер ответа: 3
Автор ответа:
 Vugar Miriyev



ICQ: 321950466 

Вопросов: 24
Ответов: 28
 Web-сайт: www.novadotnet.com
 Профиль | | #3
Добавлено: 27.06.07 13:43
Продебугируй dataraw DR, или пропиши свой листинг.
 
P.S. Кстати если есть сомнения в формате записываемых данных сбрось куданить на жесткий диск и проверь что у тебя там сохраняется. Мой листинг рабочий на все 100% из существующего проекта.

Ответить

Номер ответа: 4
Автор ответа:
 Viktor



Вопросов: 2
Ответов: 18
 Профиль | | #4 Добавлено: 02.07.07 15:00
Private Sub ImageReSave()

Dim binReader As New IO.BinaryReader(File.Open(***Old_FilePath***, FileMode.Open))
Dim binWriter As New IO.BinaryWriter(File.Open(***New_FilePath***,FileMode.OpenOrCreate))

      ;Dim mText() As Byte

      Me.Cursor = Cursors.WaitCursor

      binReader.BaseStream.Seek(0, SeekOrigin.Begin)
      Try
         mText = binReader.ReadBytes(binReader.BaseStream.Length)
         binWriter.Write(mText)
      Catch ex As Exception
MessageBox.Show(ex.Message, "Error Reading File", MessageBoxButtons.OK, MessageBoxIcon.Information)
      Finally
         binReader.Close()
         binWriter.Close()
         Me.Cursor = Cursors.Default
      End Try
   End Sub

Этот пример написал для примера как вообще считать файл и сохранить. Ну а когда мне надо было сохранить картинку (или любой другой файл) в Базе Данных, то переменную mText я записывал целиком в поле типа "Memo" или "LongBinary". Работает быстро.

Ответить

Номер ответа: 5
Автор ответа:
 ДенисЧ



Вопросов: 25
Ответов: 32
 Профиль | | #5 Добавлено: 10.07.07 12:39
Привет Vugar Miriyev, еще раз спасибо за участие. Сохраняет путь к файлу, хотя когда читает файл в поток размер показывает правильный.
Теперь к помощи Виктора.
строка
Dim binReader As New IO.BinaryReader(File.Open(***Old_FilePath***, FileMode.Open))
ругается Access to the path ...путь к файлу к-рый указал... is denied

Ответить

Номер ответа: 6
Автор ответа:
 Vugar Miriyev



ICQ: 321950466 

Вопросов: 24
Ответов: 28
 Web-сайт: www.novadotnet.com
 Профиль | | #6
Добавлено: 10.07.07 12:55
Проверь формат поля в SQL куда записываешь файл, должен быть image.

Ответить

Номер ответа: 7
Автор ответа:
 ДенисЧ



Вопросов: 25
Ответов: 32
 Профиль | | #7 Добавлено: 10.07.07 15:44
Да image - нашел ошибку в команде INSERT писал зачем-то путь, но чё туда вставить (вернее как туда вставить стрим) не понял - все либо ругается, либо не пишет ничего. Stream заполняется - для проверки заполняю пикчербокс из стрима.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам