如何为mysql的字符串查询插入二进制阅读器?

时间:2014-11-24 04:11:43

标签: mysql vb.net

我正在学习如何将图像上传到MySql数据库。在你们全都变得暴躁之前告诉我将图像上传到mysql数据库是不好的做法之后,我同意你的意见,但这是一个学校项目,这就是学校想要的。

这是我在网上找到的并且它有效。但我想更多地理解它,也许修改它以适应我的自定义潜艇。此外,图像的数据类型为blob

Dim strFileName as String 'This is the file path
Dim con As MySqlConnection = New MySqlConnection(cnn.ConnectionString)
Dim cmd As MySqlCommand
Dim fs As FileStream
Dim br As BinaryReader

Dim FileName As String = strFileName.ToString
Dim ImageData() As Byte

fs = New FileStream(FileName, FileMode.Open, FileAccess.Read)
br = New BinaryReader(fs)
ImageData = br.ReadBytes(CType(fs.Length, Integer))
br.Close()
fs.Close()

If File.Exists(strFileName) = False Then MsgBox("Cannot locate file") : Return
Dim CmdString As String = "INSERT into tbl_maps(map_name,map_floor,map) Values('" & txtMapName.Text & "','" & cmbMapsFloor.Text & "',@Image)"
cmd = New MySqlCommand(CmdString, con)
cmd.Parameters.AddWithValue("Image", ImageData)
con.Open()

现在我的问题是,有没有办法将ImageData插入MySqlCommand的字符串中?这就是我通常将数据插入数据库的方式。

Public Sub RunQuery()
    On Error Resume Next
    dr.Close()
    InitQuery()
    cmd.ExecuteNonQuery()
End Sub

Public Sub InitQuery()
    With cmd
        .CommandText = sql
        .Connection = cnn
    End With
End Sub

Private Sub something()
    sql = "INSERT into tbl_maps(map_name,map_floor) Values('" & txtMapName.Text & "','" & cmbMapsFloor.Text & "')"
    RunQuery()
    MsgBox("Data saved successfully") 'or some way to check the data inserted
End Sub

我希望看到像这样的东西

sql = "INSERT into tbl_maps(map_name,map_floor,map) Values('" & txtMapName.Text & "','" & cmbMapsFloor.Text & "','" & ImageData & "')"
RunQuery()

但我知道这不正确,因为sql是一个字符串而ImageData不是。我只想找到一种方法来避免使用cmd.Parameters.AddWithValue("Image", ImageData),或者至少将其集成到我的RunQuery子中。

P.S。:并不是真的很重要,但我喜欢1行代码集。因为我阅读的行像我读的句子。例如:

If RecordNotExist() = true then Msgbox("Record not found") : txtsearch.selectall() : txtsearch.focus() : return

翻译:如果没有记录与搜索查询匹配,请搜索其他内容。

0 个答案:

没有答案