2014-02-04 4 views
0

Я создаю простую программу, которая помогает одному просматривать изображение и сохранять его в базе данных mysql. Возникают большие проблемы в сохранении изображения в vb.net, любезно ценю вашу помощь ...Как хранить двоичные данные в mysql с помощью vb.net?

Imports System.IO 
Public Class frmSalesManager 

Private Sub frmSalesManager_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

End Sub 

Private Sub btnBrowse_Click(sender As Object, e As EventArgs) Handles btnBrowse.Click 
    OpenFileDialog1.Filter = "image file (*.jpg, *.bmp, *.png) | *.jpg; *.bmp; *.png| all files (*.*) | *.* " 
    If OpenFileDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then 
     PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName) 
    End If 
End Sub 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim fsreader As New FileStream(OpenFileDialog1.FileName, FileMode.Open, FileAccess.Read) 
    Dim breader As New BinaryReader(fsreader) 
    Dim imgbuffer(fsreader.Length) As Byte 
    breader.Read(imgbuffer, 0, fsreader.Length) 
    fsreader.Close() 
    strsql = "Insert into Test (name, picture) VALUES (@name, @picture)" 
    acsmd.CommandText = strsql 

    acsmd.Connection = con 
    acsmd.Parameters.AddWithValue("@name", txtname.Text) 
    acsmd.Parameters.AddWithValue("@picture", imgbuffer) 
    'acsmd.ExecuteNonQuery() 
    acsmd.Dispose() 
    MsgBox("Saved") 


End Sub 

Private Sub OpenFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk 
    If OpenFileDialog1.FileName <> Nothing Or OpenFileDialog1.FileName <> "" Then 
     txtname.Text = OpenFileDialog1.FileName.Substring(_ 
OpenFileDialog1.FileName.LastIndexOf("\") + 1, _ 
(OpenFileDialog1.FileName.IndexOf(".", 0) - (OpenFileDialog1.FileName.LastIndexOf("\") + 1))) 
     End If 
    End Sub 
End Class 
+0

возможно дубликат [Как хранить двоичные данные в MySQL] (http://stackoverflow.com/questions/10979100/how-to-store-binary-data-into-mysql) – Andy

+0

возможный дубликат [Двоичные данные в MySQL] (http://stackoverflow.com/questions/17/binary-data-in-mysql) –

ответ

0

Я надеюсь, что жулик является открытым соединение ... попробуйте этот код для Button1_Click

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim imgbuffer() As Byte 
     Using fsreader As New FileStream(OpenFileDialog1.FileName, FileMode.Open, FileAccess.Read) 
      ReDim imgbuffer(fsreader.Length - 1) 
      Using breader As New BinaryReader(fsreader) 
       breader.Read(imgbuffer, 0, fsreader.Length) 
      End Using 
     End Using 

     strsql = "Insert into Test (name, picture) VALUES (@name, @picture)" 
     acsmd.CommandText = strsql 

     acsmd.Connection = con 
     acsmd.Parameters.AddWithValue("@name", txtname.Text) 
     acsmd.Parameters.AddWithValue("@picture", imgbuffer) 
     acsmd.ExecuteNonQuery() 
     acsmd.Dispose() 
     MsgBox("Saved") 
    End Sub 
0

Binary данные могут храниться в базе данных MySQL в поле BLOB. A BLOB - это двоичный большой объект, который может содержать переменное количество данных.

  • Коротких куски двоичных данных, такие как хэш паролей, работаю очень хорошо, просто base64-кодирование и хранение результирующей строки как VARCHAR
  • «не совсем бинарные» данные, такие как snipplets документов со случайными непечатаемыми могут быть экранированы и сохранены в виде строки
  • Тип данных BLOB позволяет хранить произвольные фрагменты двоичных данных, но я настоятельно рекомендую использовать его: Храните данные в файле, а затем сохраните путь до файл в строковом типе. Вы ничего не получаете от хранения двоичных данных, что БД не «понимает» в БД.

Source

Смежные вопросы