如何将绘图保存到mysql中?

时间:2018-09-23 13:13:23

标签: mysql-workbench vb.net-2010

我有一种方法,用户可以在图片框上绘制任何所需的图像,但是问题是我无法将图形保存到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 :(得分:0)

如果可以将在图片框上绘制的图像保存到本地磁盘上,则可以执行以下操作: 在您的SQL表上,将picture列的数据类型定义为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

这会将您的图片框图像保存到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数据库中会增加资源消耗,并可能导致性能问题,尤其是在您的应用程序在网络上运行或具有大型数据库的情况下。