最後,我想從Access數據庫中抓取OLE類型的圖像並將其放入圖片框中。在C#和MS Access 2010中使用Visual Studio 2012.我的解決方案是與應用程序無關的Web。從數據庫檢索圖像時參數無效
所以這是查詢代碼。我正在構建一個對象(Equipamento
),其中包含System.Drawing.Image
屬性,這是該問題的焦點。
OleDbConnection l = OleDbConnectionDAO.createConnection();
Equipamento eq = new Equipamento();
try
{
OleDbDataAdapter adapter = new OleDbDataAdapter(
"SELECT * FROM [APP_Equipamento_Geral] WHERE COD_ETIQ like '%"
+ codigo
+ " %'",
l);
DataSet ds = new DataSet();
adapter.Fill(ds, "[APP_Equipamento_Geral]");
string s = ds.Tables["[APP_Equipamento_Geral]"].Columns[16].ColumnName;
foreach (DataRow row in ds.Tables["[APP_Equipamento_Geral]"].Rows)
{
eq.NInventario = row["Codigo"].ToString();
eq.Modelo = row["MODELO"].ToString();
eq.Marca = row["Marca_"].ToString();
eq.GamaMedida = row["Gama Medida"].ToString();
if (row["FOTO"] != DBNull.Value && row["FOTO"] != null)
{
byte[] b = new byte[0];
b = (byte[])row["FOTO"];
eq.Img = getImageFromBytes(b);//Error caught here
}
//if (row["FOTO"] != DBNull.Value && row["FOTO"] != null)
//{
// byte[] b = (byte[])row["FOTO"];
// MemoryStream ms = new MemoryStream(b);
// eq.Img = Image.FromStream(ms); //Error caught here
//}
}
}
這裏是輔助方法:
private Image getImageFromBytes(byte[] myByteArray)
{
System.IO.MemoryStream newImageStream
= new System.IO.MemoryStream(myByteArray, 0, myByteArray.Length);\
return Image.FromStream(newImageStream, true);
}
這代碼最後評論的作品是我的另一個嘗試也給
無效參數
錯誤。任何解決方案
注:如果我拿出圖像的一部分,一切工作正常。
怎樣的形象進入數據庫?根據它的寫法,它可能不是一個普通的圖像。 –
我不知道它是如何進去的。我只能訪問它所在的桌子,就是這樣。在桌上它說「* Microsoft Word圖片*」,並在結構視圖中顯示「* OLE Object *」 –