我正在学习如何将图像上传到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
翻译:如果没有记录与搜索查询匹配,请搜索其他内容。