将图像保存到 mysql 数据库时出现问题。程序运行完美,没有错误

Posted

技术标签:

【中文标题】将图像保存到 mysql 数据库时出现问题。程序运行完美,没有错误【英文标题】:issue in saving image to mysql database . Program is running perfectly with no errors 【发布时间】:2019-02-11 08:34:06 【问题描述】:
Imports mysql.Data.MySqlClient

Imports System.IO



Public Class Form1
    Dim connection As New MySqlConnection("server=Localhost;userid=root;password=root;database=image")

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim opf As New OpenFileDialog
        opf.Filter = "Choose Image(*.JPF;*.PNG;*.GIF)|*.jpg;*.png;*.gif"
        If opf.ShowDialog = Windows.Forms.DialogResult.OK Then
            PictureBox1.Image = Image.FromFile(opf.FileName)
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim command As New MySqlCommand("insert into saveimage(image) values(@img)", connection)
        Dim ms As New MemoryStream
        PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
        command.Parameters.AddWithValue("@img", SqlDbType.Image).Value = ms.ToArray()
        connection.Open()

        MessageBox.Show("Insert image")



    End Sub
End Class

【问题讨论】:

它是否将@img 识别为字符串? 表定义是什么?当你检索它时会发生什么?如果它运行完美,你就不会问我假设的问题。 为了将来参考,标题和代码永远不是一个足够的问题。标题应总结问题,然后问题应提供问题的完整和清晰的解释,其中必须包括相关代码,但不得仅限于此。如果您不想按照帮助中心中的说明发布适当的问题,您可能会发现人们懒得回答您的问题,而且他们很快就会被关闭。 【参考方案1】:

这是错误的:

command.Parameters.AddWithValue("@img", SqlDbType.Image).Value = ms.ToArray()

您正在混合和匹配两种不同的添加参数的方式。如果你打电话给AddWithValue(你通常不应该这样做),那么你需要提供一个值,而不是一个类型。如果你要指定一个类型,然后设置Value,那么你调用Add

另外,SqlDBType 用于SqlClient 和 SQL Server。如果您使用MySqlClient 和MySQL,那么您需要使用MySqlDbType。这是您为什么需要Option Strict On 的完美示例。

你的代码应该是这样的:

command.Parameters.Add("@img", MySqlDbType.Blob).Value = ms.ToArray()

我说“类似这样”是因为您指定的类型取决于您在数据库中使用的实际数据类型。如果你需要使用VarBinary,那么你也应该指定一个大小。

【讨论】:

以上是关于将图像保存到 mysql 数据库时出现问题。程序运行完美,没有错误的主要内容,如果未能解决你的问题,请参考以下文章

编写spring boot程序时出现异常

当我尝试捕获图像(内置相机)并将其保存到文件时出现 NullPointerException [重复]

保存用相机拍摄或从相机胶卷中选择的图像时出现长时间延迟 - iPhone

python - 使用 Django 将 Unicode 字符存储到 MySQL 时出现问题

在 SQliteDatabase 中保存图像时出现 OutOfMemoryError

尝试保存图像时出现 Android 运行时错误