DBから画像を取得するときに無効なパラメータが発生するため、実際の問題についてまとめて答えを得ることができないようです。C# および MS Access 2010 で Visual Studio 2012 を使用しています。私のソリューションは、Web に関連しないアプリです。
この部分についてはよくわからないので、ここでの質問は、行にあるOLEオブジェクトのイメージをクエリからバイト配列( byte[] )に正しく取得する方法です。次のコードで実行しています。私が話している行はrow["FOTO"]です。
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.NSerie = row["N_SERIE"].ToString();
eq.NInventario = row["Codigo"].ToString();
if (row["FOTO"] != DBNull.Value && row["FOTO"] != null)
{
string str = row["FOTO"].ToString();
byte[] b = stringToByteArray(str);
byte[] imagebyte = GetImageBytesFromOLEField(b); //Error caught here
MemoryStream ms = new MemoryStream();
ms.Write(imagebyte, 0, imagebyte.Length);
}
}
メソッド GetImageBytesFromOLEField は、ここにあります。それが私に与えているエラーは、行string strVTemp = strTemp.Substring(0, 300);のインデックスの長さについてです。
繰り返しますが、ここでの主な問題は、DataRow 行 ["FOTO"]のOLE オブジェクトをbyte[]に変換して、そのメソッドで使用する方法です。