我正在使用 C# 使用 .NET 和 MySQL 数据库开发应用程序。我需要能够在数据库中插入和检索图像,为此我有一个类型为 LONGBLOB
的名为“Image”的列。插入进行得很顺利,但是当我尝试检索 blob 时,弹出以下错误:
GetBytes() can only be called on binary or GUID columns
我正在使用以下代码从数据库中进行选择:
Conn.Open();
string sql = @"SELECT `ID`, `Image`, `Note`"
+ " FROM `Item`"
+ " WHERE `ID` = ?ID";
MySqlCommand cmd = new MySqlCommand(sql, Conn);
cmd.Parameters.Add(new MySqlParameter("?ID", iD));
cmd.Prepare();
rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
while (rdr.Read())
{
this.ID= rdr.GetString("ID");
if (!rdr.IsDBNull(1))
{
long len = rdr.GetBytes(1, 0, null, 0, 0);
byte[] ImageBytes = new byte[len];
rdr.GetBytes(1, 0, ImageBytes, 0, (int)len);
MemoryStream ms = new MemoryStream(ImageBytes);
this.Image = Image.FromStream(ms);
}
this.Note = rdr.GetString("Note");
尽管将列类型更改为 binary
和 varbinary
,我仍然遇到相同的错误。
有谁知道我在这里做错了什么? 时间差
最佳答案
不能将 rdr["Image"] 转换为 byte[] 吗?
关于c# - GetBytes() 只能在二进制或 GUID 列上调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15210895/