我使用以下代码使用MysqlConnector for .net在mysql的tinyblob
字段中存储缩略图大小的图像(小于50kb)
Dim imgCov As New ImageConverter()
Dim imgArray As Byte() = DirectCast(imgCov.ConvertTo(pictureBox1.Image , GetType(Byte())), Byte())
Try
Using conn As New MySqlConnection(conStr)
conn.Open
Dim sql As String ="Insert Into Services(Name,Code,Emp_ID,Image) Values(@Name,@Code,@Emp_ID,@Image)"
Using cmd As New MySqlCommand(sql,conn)
cmd.Parameters.Add("@Name", MySqlDbType.VarChar, 45).Value ="Ironing"
cmd.Parameters.Add("@Code", MySqlDbType.VarChar, 45).Value ="IRN"
cmd.Parameters.Add("@Emp_ID", MySqlDbType.Int32).Value =1
cmd.Parameters.Add("@Image", MySqlDbType.LongBlob, 100).Value=imgArray
cmd.ExecuteNonQuery ()
End Using
End Using
MsgBox("Insert Complete")
Catch ex As Exception
MsgBox(ex.Message)
End Try
问题是当我存储图像时,它不会保存所有数据。当我尝试检索并开始出错时,这很明显。
调查错误,我简单地将字段大小增加到longblob
,之后工作正常。
那么为什么我不能在微小的野外场中存储20KB的图像?
答案 0 :(得分:5)
TINYBLOB只能容纳256个字节;你需要至少一个普通的BLOB,它可以存储64KB。
http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html