BLOB 列を含む IMAGES というテーブルがあると仮定すると、次のようなことを行う必要があります。
byte[] imageData = FileUpload1.FileBytes;
OracleCommand cmd = new OracleCommand("INSERT INTO IMAGES(PARENT_ID, IMAGE_DATA) VALUES(:1, :2)", connection);
cmd.Parameters.Add("1", OracleDbType.Int32, parentID, ParameterDirection.Input);
cmd.Parameters.Add("2", OracleDbType.Blob, imageData, ParameterDirection.Input);
cmd.ExecuteNonQuery();
更新<img src="ImageFromDatabase.ashx?id=1234">
: 画像を表示する場合、主に、HTML ページには画像への参照のみが含まれていること ( ) と、画像自体が別の要求によって提供されることを理解する必要があります。次の例では、Generic Handlerを使用しています。
public void ProcessRequest (HttpContext context) {
HttpRequest request = context.Request;
int parentID = Int32.Parse(request.QueryString["id"]);
OracleCommand cmd = new OracleCommand("SELECT * FROM IMAGES WHERE PARENT_ID = :1", connection);
cmd.Parameters.Add("1", OracleDbType.Int32, parentID, ParameterDirection.Input);
OracleDataReader reader = cmd.ExecuteReader();
byte[] imageData = ((OracleBlob)reader["IMAGE_DATA"]).Value;
context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite(imageByte);
}
実際のアプリケーションで追加する必要があるエラー処理はすべて省略しました。
更新 2:
グリッド ビューを使用している場合は、次のように画像列を定義できます。
<asp:Image ID="Image1" runat="server" ImageUrl='<%# "ImageFromDatabase.ashx?id=" + Eval("ImageID")%>'/>