.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");
列タイプをbinary
とvarbinary
に変更しても、同じエラーが発生しました。
私がここで間違っていることを誰かが知っていますか?TIA