在C#中从MySQL中检索LONGBLOB
我想从我的MySQL数据库中检索LONGBLOB,但我不知道如何。 我搜索了interwebz并没有发现任何真正有用(可理解)的内容。 当我检索LONGBLOB时,我想将其保存为图像。
这是我已经尝试过的:
int bufferSize = 100; byte[] bin = new byte[bufferSize]; long retval = 0; long startIndex = 0; MemoryStream ms = null; Image image = null; MySqlCommand command = new MySqlCommand("select * from image where uid = @uid", Connection.Connect()); command.Parameters.AddWithValue("@uid", "2"); MySqlDataReader reader = command.ExecuteReader(); if (reader.Read()) { retval = reader.GetBytes(reader.GetOrdinal("logo"), startIndex, bin, 0, bufferSize); } ms = new MemoryStream(bin); image = Image.FromStream(ms);
提前致谢。
我实际上这是我正在做的一个项目的一部分……
public Bitmap loadImage(int imgID) { MySqlDataReader myData; MySqlCommand cmd = new MySqlCommand(); 字符串SQL; byte [] rawData; MemoryStream ms; UInt32 FileSize; 位图outImage; SQL =“SELECT ImageName,ImageSize,Image FROM Images WHERE ImageID =”; SQL + = imgID.ToString(); 尝试 { cmd.Connection = connection; cmd.CommandText = SQL; myData = cmd.ExecuteReader(); if(!myData.HasRows) 抛出新的exception(“没有要保存的blob”); myData.Read(); FileSize = myData.GetUInt32(myData.GetOrdinal(“ImageSize”)); rawData = new byte [FileSize]; myData.GetBytes(myData.GetOrdinal(“Image”),0,rawData,0,(Int32)FileSize); ms = new MemoryStream(rawData); outImage = new Bitmap(ms); ms.Close(); ms.Dispose(); myData.Close(); myData.Dispose(); cmd.Dispose(); 返回图像; } catch(MySqlException ex) { MessageBox.Show(ex.Message); return null; } }
希望这可以帮助。 也请原谅任何不良编码做法,这是前一段时间写的。
谢谢汤姆
我不确定,但我认为你可以试试这个: http : //www.techrepublic.com/article/utilize-adonet-and-c-to-work-with-blob-data/5766889
斯特凡