首页 > 解决方案 > 如何将绘图保存到mysql中?

问题描述

我有一种方法,用户可以在图片框上绘制他们想要的任何东西,但问题是我无法将绘图保存到 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

请帮助我,我坚持下去。

标签: mysql-workbenchvb.net-2010

解决方案


如果您可以将在picturebox 上绘制的图像保存到本地磁盘,那么您可以这样做: 在您的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 数据库会增加资源消耗并可能导致性能问题,尤其是当您的应用程序在网络上运行或具有大型数据库时。


推荐阅读