1

.NETとMySQLデータベースを使用してC#でアプリを開発しています。データベースに画像を挿入したり、データベースから画像を取得したりできる必要があります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に変更しても、同じエラーが発生しました。

私がここで間違っていることを誰かが知っていますか?TIA

4

1 に答える 1

0

rdr["Image"] を byte[] としてキャストできませんか?

于 2013-03-04T21:03:51.217 に答える