错误[42000][MySQL][ODBC 8.0(w)驱动程序][mysqld-5.6.44-cll-lve]您的SQL语法有错误

错误[42000][MySQL][ODBC 8.0(w)驱动程序][mysqld-5.6.44-cll-lve]您的SQL语法有错误,mysql,vb.net,image,Mysql,Vb.net,Image,您好,很抱歉打扰您,但也许您可以帮助我,我正在尝试将图像保存到MySQL数据库中,但我在某个地方出错,我不知道还能做什么。。我正在开发VB.net应用程序,下面是代码: Private Function Imagen_Bytes(ByVal Imagen As Image) As Byte() If Not Imagen Is Nothing Then Dim Bin As New MemoryStream Imagen.Save(

您好,很抱歉打扰您,但也许您可以帮助我,我正在尝试将图像保存到MySQL数据库中,但我在某个地方出错,我不知道还能做什么。。我正在开发VB.net应用程序,下面是代码:

Private Function Imagen_Bytes(ByVal Imagen As Image) As Byte()
        If Not Imagen Is Nothing Then
            Dim Bin As New MemoryStream
            Imagen.Save(Bin, Imaging.ImageFormat.Jpeg)
            Return Bin.GetBuffer
        Else
            Return Nothing
        End If
End Function
这是“保存”按钮上的代码:

Private子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击
尝试

Dim SQL As String=“INSERT INTO`ImagenPrueba`(`imagen`)value(?foto)”我认为参数名的格式是错误的(即,
@foto
),但我使用MySql不够确定。我也尝试了@foto,但我得到了相同的错误:(您必须使用ODBC吗?如果不使用ADO.NET专用的MySQL提供程序,即Connector/NET。然后您可以使用@作为参数前缀,这与Microsoft提供程序更相似。否则,我认为您需要使用冒号,但我也不是MySQL用户,因此我不能100%确定。我看到您使用的是
OdbcConnec选项
,因此您可能无法使用命名参数。相反,您可能必须使用
?作为占位符,这意味着参数的顺序必须正确(当您有多个参数时)。您必须检查与正在使用的库相关的文档。使用专用的Mysql驱动程序,您可能可以使用命名参数。过了一会儿,我自己就能够解决这个问题,因此出于某种原因,您不能使用命名参数,正如您在ODBC库中所说的,而我只是使用Mysql引用和砰!现在一切都正常了哈哈,非常感谢大家我认为参数名的格式是错误的(即,
@foto
),但我使用MySql不够确定。我也尝试过@foto,但我得到了相同的错误:(您必须使用ODBC吗?如果不使用ADO.NET专用的MySQL提供程序,即Connector/NET。然后您可以使用@作为参数前缀,这与Microsoft提供程序更相似。否则,我认为您需要使用冒号,但我也不是MySQL用户,因此我不能100%确定。我看到您使用的是
OdbcConnec选项
,因此您可能无法使用命名参数。相反,您可能必须使用?作为占位符,这意味着参数的顺序必须正确(当您有多个参数时)。您必须检查与正在使用的库相关的文档。使用专用的Mysql驱动程序,您可能可以使用命名参数。过了一会儿,我自己就能够解决这个问题,因此出于某种原因,您不能使用命名参数,正如您在ODBC库中所说的,而我只是使用Mysql引用和砰!一切都很好,哈哈,非常感谢大家
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            Dim SQL As String = "INSERT INTO `ImagenPrueba`(`imagen`) VALUES (?foto)"<--SYNTAX ERROR HERE
            CNN = New OdbcConnection(StrConexion)
            Dim Comando As New OdbcCommand(SQL, CNN)
            Dim IMAG As Byte()
            IMAG = Imagen_Bytes(Me.UserPictureBox.Image)

            Comando.Parameters.AddWithValue("?foto", IMAG)

            CNN.Open()
            If cnn.State = ConnectionState.Open Then
                Comando.ExecuteNonQuery()
            End If
            cnn.Close()
            MsgBox("OKKKK")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
End Sub