2014-02-10 4 views
0

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

img was ruin.

это мои коды на сохранение файла изображения в тип данных BLOB.

Dim filename As String = Me.OpenFileDialog1.FileName 
    Dim FileSize As UInt32 

    Dim conn As New MySqlConnection 
    conn = New MySqlConnection("server=localhost;user=root;password=;database=ticketing_system;") 
    conn.Open() 

    Dim mstream As New System.IO.MemoryStream() 
    Me.PbPicture.Image = Image.FromFile(Me.OpenFileDialog1.FileName) 
    Me.PbPicture.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg) 

    Dim arrImage() As Byte = mstream.GetBuffer() 


    FileSize = mstream.Length 
    Dim sqlcmd As New MySql.Data.MySqlClient.MySqlCommand 
    Dim sql As String 
    mstream.Close() 

    ' DBconn.Close() 

    sql = "INSERT INTO clientreports(img)VALUES(@File)" 
    Try 
     ' DBconn.Open() 
     With sqlcmd 
      .CommandText = sql 

      .Connection = conn 
      .Parameters.AddWithValue("@File", arrImage) 
      .ExecuteNonQuery() 
     End With 

    Catch ex As Exception 

     MsgBox(ex.Message) 

    Finally 

     conn.Close() 

    End Try 

вот мой код на отображение моего изображения на PictureBox.

Dim strSQL As String 
    Dim conn As New MySqlConnection 
    Dim cmd As New MySqlCommand 
    Dim dr As MySqlDataReader 
    conn = New MySqlConnection("server=localhost;user=root;password=;database=ticketing_system;") 


    Dim SQLConnection As MySqlConnection = New MySqlConnection 
    'Dim connection As New SqlConnection("connection string here") 
    Dim command As New MySqlCommand("SELECT img FROM errdeschis where err_id='31'", conn) 

    conn.Open() 

    Dim pictureData As Byte() = DirectCast(command.ExecuteScalar(), Byte()) 
    conn.Close() 

    Dim picture As Image = Nothing 
    'Create a stream in memory containing the bytes that comprise the image. 
    Using stream As New IO.MemoryStream(pictureData) 

     'Read the stream and create an Image object from the data.  
     PictureBox1.Image = Image.FromStream(stream) 
    End Using 

, пожалуйста, ребята, помогите мне.

+0

Вы проверили длину по пути в пути или на выходе? Это может быть полезно при попытке определить, что разрушается. –

+0

no sir.I нет, кстати, сэр, как проверить длину на vs? –

+0

в любом случае вы знаете, как преобразовать изображение, прежде чем хранить его в базе данных? –

ответ

1

OKAY.Используйте MEDIUMBLOB или LONGBLOB для поля.

0

Вы пробовали ответить psren?

изменил BLOB в LONGBLOB

Это работает для меня!

+0

Почему вы копируете уже существующий ответ? –

+0

Мне жаль, но я просто уточнил решение его проблемы, потому что я также столкнулся с его проблемой и нашел ответ psren, и так как он/она не отвечает на это. Я просто хотел убедиться, что он/она уже проверил ответ psren. – HazzoN

+0

Извините, если я ошибся, я не сделаю это снова – HazzoN

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