この記事では、SQL Server に画像を保存し、.Net WinForm および .Net WebForm (asp.net) で画像を読み取って表示する方法についてまとめています。
1. asp.net を使用してイメージをアップロードし、SQL Server に保存し、SQL Server から読み取って表示します。
1) SQL Server にアップロードして保存する
データベース構造
テーブルテストの作成
{
IDID(1,1)、
Fイメージ画像
}
関連するストアド プロシージャ
プロシージャUpdateImageを作成する
(
@UpdateImage 画像
)
として
テスト (FImage) 値に挿入 (@UpdateImage)
行く
以下を UpPhoto.aspx ファイルに追加します。
<input id="UpPhoto" name="UpPhoto" runat="server" type="file">
<asp:Button id="btnAdd" name="btnAdd" runat="server" Text="Upload"></asp:Button>
次に、分離コード ファイル UpPhoto.aspx.cs に btnAdd ボタンのクリック イベント処理コードを追加します。
private void btnAdd_Click(オブジェクト送信者, System.EventArgs e)
{
//画像を取得し、byte[]に変換します
HttpPostedFile upPhoto=UpPhoto.PostedFile;
int upPhotoLength=upPhoto.ContentLength;
byte[] PhotoArray=new Byte[upPhotoLength];
ストリーム PhotoStream=upPhoto.InputStream;
PhotoStream.Read(PhotoArray,0,upPhotoLength);
//データベースに接続する
SqlConnection conn=new SqlConnection();
conn.ConnectionString="データ ソース = localhost;データベース = テスト;ユーザー ID = sa;Pwd = sa";
SqlCommand cmd=new SqlCommand("UpdateImage",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
cmd.Parameters["@UpdateImage"].Value=PhotoArray;
//ストアド プロシージャを使用せずに画像を追加する場合は、上記の 4 行のコードを次のように変更します。
//string strSql="テスト(FImage) 値に挿入(@FImage)";
//SqlCommand cmd=new SqlCommand(strSql,conn);
//cmd.Parameters.Add("@FImage",SqlDbType.Image);
//cmd.Parameters["@FImage"].Value=PhotoArray;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
2) SQL Server から読み取り、画像を表示する必要がある場所に次のコードを追加します。
<asp:image id="imgPhoto" runat="server" ImageUrl="ShowPhoto.aspx"></asp:image>
ShowPhoto.aspx 本体コード:
private void Page_Load(オブジェクト送信者、System.EventArgs e)
{
if(!Page.IsPostBack)
{
SqlConnection conn=new SqlConnection()
conn.ConnectionString="データ ソース = localhost;データベース = テスト;ユーザー ID = sa;Pwd = sa";
string strSql="select * from test where id=2";//ここでは、id 2 の画像が取得されたと仮定します。
SqlCommand cmd=new SqlCommand(strSql,conn);
conn.Open();
SqlDataReader リーダー=cmd.ExecuteReader();
リーダー.Read();
Response.ContentType="アプリケーション/オクテットストリーム";
Response.BinaryWrite((Byte[])reader["FImage"]);
Response.End();
Reader.Close();
}
2.
WinForm の SQL Server に画像を保存し、SQL Server から読み取って、picturebox に表示します。
1) SQL Server に保存
使用するデータベース構造とストアド プロシージャは上記と同じです。まず、OpenFileDialog コントロールをフォームに追加し、ofdSelectPic という名前を付けます。
次に、フォームにファイルを開くボタンを追加し、次のクリック イベント コードを追加します。
ストリームミリ秒;
バイト[]ピクバイト;
//ofdSelectPic.ShowDialog();
if (ofdSelectPic.ShowDialog()==DialogResult.OK)
{
if ((ms=ofdSelectPic.OpenFile())!=null)
{
//MessageBox.Show("ok");
picbyte=新しいバイト[ms.Length];
ミリ秒位置=0;
ms.Read(picbyte,0,Convert.ToInt32(ms.Length));
//MessageBox.Show("読み取りが完了しました!");
//データベースに接続する
SqlConnection conn=new SqlConnection();
conn.ConnectionString="データ ソース = localhost;データベース = テスト;ユーザー ID = sa;Pwd = sa";
SqlCommand cmd=new SqlCommand("UpdateImage",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
cmd.Parameters["@UpdateImage"].Value=picbyte;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
ms.Close();
}
}
2) ピクチャボックスを読み取って表示する まず、ptbShow という名前のピクチャボックスを追加します。
次に、ボタンを追加し、次の応答イベントを追加します。
SqlConnection conn=new SqlConnection();
conn.ConnectionString="データ ソース = localhost;データベース = テスト;ユーザー ID = sa;Pwd = sa";
string strSql="id=1 のテストから FImage を選択";
SqlCommand cmd=new SqlCommand(strSql,conn);
conn.Open();
SqlDataReader リーダー=cmd.ExecuteReader();
リーダー.Read();
MemoryStream ms=new MemoryStream((byte[])reader["FImage"])
;
Reader.Close();
conn.Close();
ptbShow.Image=画像;
元のアドレス: http://stewen.cnblogs.com/archive/2005/12/20/300587.aspx