c# - GetBytes() 只能在二进制或 GUID 列上调用

标签 c# mysql .net blob mysqldatareader

我正在使用 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");

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

有谁知道我在这里做错了什么? 时间差

最佳答案

不能将 rdr["Image"] 转换为 byte[] 吗?

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

相关文章:

c# - 将 DateTime.Add(TimeSpan) 与 LINQ 结合使用

php - 是否可以在一个 MySQL 查询中完成此操作?

php - 如何从 ANDROID -> PHP -> MySQL 发送 jsonArray 中的多个数据?

c# - 如何循环遍历所有目录中的所有文件并仅获取文件的类型?

c# - 如何将静态项目添加到绑定(bind)到现有数据源的上下文菜单?

c# - 在 C# 中将大文件读入字节数组的最佳方法?

c# - 使用 C++ 和嵌入式单声道调用 C# DLL 时无法加载程序集系统

php - 从数据库检索数据并分解并基于该选择复选框

.net - 在 SqlBulkCopy 之前截断

c# - 这是 MCTS 自定进度培训套件(考试 70-536)中的错误吗?