我搜索了很多,並嘗試了各種方法,但無法解決這個問題。 我需要將圖像保存到mysql文件。從MySQL檢索中等blob只返回13個字節
我用下面的代碼來保存圖像到數據庫中。
try
{
string location = @"C:\Users\test\Downloads\Photos\batman-greenscreen.jpg";
FileStream fs = new FileStream(location, FileMode.Open, FileAccess.Read);
UInt32 fileLength = (UInt32)fs.Length;
byte[] buffer = new byte[fileLength];
fs.Read(buffer, 0, (int)fileLength);
string sqlPhotoQuery = "INSERT INTO tab_photo VALUES('" + photo.PhotoId + "','" + photo.ProjectID + "','" + photo.Day + "','" + photo.Barcode + "','" + photo.Photoname + "','" + photo.PhotoXml + "','" + buffer + "','" + fileLength + "')";
int result = MySqlHelper.ExecuteNonQuery(connectionString, sqlPhotoQuery);
if (result > 0)
return true;
else
return false;
}
catch (Exception e)
{
return false;
}
在這個文件中的圖像長度
是12428,
什麼,我試圖從數據庫中檢索數據:
Photo photo = new Photo();
try
{
string sqlQuery = "SELECT * FROM tab_photo where PhotoId='"+photoId+"'";
MySqlDataReader rdr = MySqlHelper.ExecuteReader(connectionString, sqlQuery);
while (rdr.Read())
{
photo.PhotoId = rdr.GetString("PhotoId");
photo.ProjectID = rdr.GetString("ProjectID");
photo.Day = rdr.GetInt32("Day");
photo.Barcode = rdr.GetString("Barcode");
photo.Photoname = rdr.GetString("Photoname");
photo.PhotoXml = rdr.GetString("PhotoXml");
MemoryStream ms;
UInt32 FileSize;
Bitmap outImage;
int fileSize = rdr.GetInt32(rdr.GetOrdinal("PhotoSize"));
byte[] rawData = new byte[fileSize];
rdr.GetBytes(rdr.GetOrdinal("Photo"), 0, rawData, 0, (Int32)fileSize);
photo.imageByte = rawData;
}
}
catch (Exception e)
{}
但是當我找回文件,它僅適用於前13個字節檢索。之後它的值爲零並且有檢索值差異。
我已按照Handling BLOB Data With Connector/Net提到的指令。
根據該如下我已經改變了我的設置:
這是數據如何保存在數據庫
什麼是我不能得到正確的值的原因是什麼?數據保存或數據檢索或數據庫配置中是否存在任何問題?
數據庫的數據看起來像什麼? Insert語句是否將完整的'byte []緩衝區加載到數據庫中? – jordanhill123 2013-04-05 07:00:48
@ jordanhill123我已經添加分貝樣品以及 – DevT 2013-04-05 07:05:09