只能在二进制或GUID列上调用GetBytes

只能在二进制或GUID列上调用GetBytes

我正在用.NET和MySQL数据库在C#中开发一个应用程序。我需要能够在数据库内外插入和检索图像,并且为此目的我有一列名为“图像”的类型为LONGBLOB的图像。插入进行得很好,但是当我尝试检索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");


尽管将列类型更改为binaryvarbinary,我仍然遇到相同的错误。

有人知道我在做什么错吗?
TIA

最佳答案

您不能将rdr [“ Image”]转换为byte []吗?

关于c# - 只能在二进制或GUID列上调用GetBytes(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15210895/

10-11 08:30