我想从我的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);
提前致谢。
答案 0 :(得分:3)
我实际上已将此作为我正在进行的项目的一部分......
public Bitmap loadImage(int imgID) { MySqlDataReader myData; MySqlCommand cmd = new MySqlCommand(); string SQL; byte[] rawData; MemoryStream ms; UInt32 FileSize; Bitmap outImage; SQL = "SELECT ImageName, ImageSize, Image FROM Images WHERE ImageID ="; SQL += imgID.ToString(); try { cmd.Connection = connection; cmd.CommandText = SQL; myData = cmd.ExecuteReader(); if (!myData.HasRows) throw new Exception("There are no blobs to save"); 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(); return outImage; } catch (MySqlException ex) { MessageBox.Show(ex.Message); return null; } }
希望这会有所帮助。也请原谅任何不良编码做法,这是在不久前写的。
由于 汤姆
答案 1 :(得分:0)
我不确定,但我认为你可以试试这个:http://www.techrepublic.com/article/utilize-adonet-and-c-to-work-with-blob-data/5766889
的Stefan