Как сохранить рисунок в MySQL? - PullRequest
0 голосов
/ 23 сентября 2018

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

Это мой код кнопки сохранения:

Private Sub btnsave_Click(sender As System.Object, e As System.EventArgs) Handles btnsave.Click
    Dim mstream As New System.IO.MemoryStream()
    pbtest.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
    Dim arrImage() As Byte = mstream.GetBuffer()
    MysqlConn = New MySqlConnection
    MysqlConn.ConnectionString =
        "server=localhost;userid=root;password=rico;database=god;"
    Try
        MysqlConn.Open()
        COMMAND.CommandText = "insert into god.precord (picture) values (@picture)"
        COMMAND.Connection = MysqlConn
        COMMAND.CommandType = CommandType.Text
        COMMAND.Parameters.AddWithValue("@picture", arrImage)
        COMMAND.ExecuteNonQuery()
        MessageBox.Show("Data Saved")
        MysqlConn.Close()

    Catch ex As MySqlException
        MessageBox.Show(ex.Message)
    Finally
        MysqlConn.Dispose()
    End Try

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

1 Ответ

0 голосов
/ 03 ноября 2018

Если вы можете сохранить изображение, нарисованное в окне Picturebox, на локальный диск, то вы можете сделать это: В вашей таблице SQL определите тип данных столбца изображения как varbinary (max).Пример:

Create table tblA (Picture varbinary (max));
Create proc uspInsertPictureA @Picture varbinary (max) as insert into tblA (Picture) values (@Picture);

Затем в вашем приложении VB.Net сделайте следующее:

Command.Parameters.Add("@Picture", SqlDbType.VarBinary).Value = System.IO.File.ReadAllBytes(PictureBox1.ImageLocation) --> Change PictureBox1 to your PictureBox name
Command.ExecuteNonQuery

Это сохранит ваш образ picturebox в вашей базе данных SQL.Затем, чтобы извлечь изображение из базы данных SQL Server в приложение VB.Net, сделайте следующее:

Command.CommandText = "Select Picture from tblA"
Dim BLOB = DirectCast(Command.ExecuteScalar, Byte())
Dim Picture = New System.IO.MemoryStream
Picture.write(BLOB, 0, BLOB.Length)
PictureBox.Image = New Bitmap(Picture)

Надеюсь, это поможет.Однако, если я могу предложить, вам лучше сохранить изображение, нарисованное на картинке, на локальный диск, а затем сохранить местоположение файла вместо самого изображения в базе данных SQL Server.Сохранение изображения / изображения в базе данных SQL Server увеличивает потребление ресурсов и может привести к проблемам с производительностью, особенно если ваше приложение работает в сети или имеет большую базу данных.

...