이 문서에서는 SQL Server에 이미지를 저장하고 .Net WinForm 및 .Net WebForm(asp.net)에서 읽고 표시하는 방법을 요약합니다.
1. asp.net을 사용하여 이미지를 업로드하고 SQL Server에 저장한 다음 SQL Server에서 읽고 표시합니다.
1) SQL Server에 업로드 및 저장
데이터베이스 구조
테이블 테스트 생성
{
신원(1,1),
F이미지 이미지
}
관련 저장 프로시저
proc UpdateImage 생성
(
@UpdateImage 이미지
)
처럼
테스트(FImage) 값에 삽입(@UpdateImage)
가다
UpPhoto.aspx 파일에 다음을 추가합니다.
<input id="UpPhoto" name="UpPhoto" runat="server" type="file">
<asp:Button id="btnAdd" name="btnAdd" runat="server" Text="업로드"></asp:Button>
그런 다음 코드 숨김 파일 UpPhoto.aspx.cs에 btnAdd 단추의 클릭 이벤트 처리 코드를 추가합니다.
개인 무효 btnAdd_Click(개체 전송자, System.EventArgs e)
{
//이미지를 가져와서 이미지를 byte[]로 변환합니다.
HttpPostedFile upPhoto=UpPhoto.PostedFile;
int upPhotoLength=upPhoto.ContentLength;
byte[] PhotoArray=새 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;
//저장 프로시저를 사용하지 않고 그림을 추가하려면 위의 네 줄의 코드를 다음과 같이 변경하세요.
//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 본문 코드:
개인 무효 Page_Load(개체 전송자, System.EventArgs e)
{
if(!Page.IsPostBack)
{
SqlConnection conn=새 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();
리더.읽기();
Response.ContentType="응용 프로그램/옥텟-스트림";
Response.BinaryWrite((Byte[])reader["FImage"]);
응답.끝();
리더.닫기();
}
}
2. 그림을 WinForm의 SQL Server에 저장하고 SQL Server에서 읽어 그림 상자에 표시합니다.
1) SQL Server에 저장
사용된 데이터베이스 구조와 저장 프로시저는 위와 동일합니다. 먼저 OpenFileDialog 컨트롤을 양식에 추가하고 이름을 ofdSelectPic로 지정합니다.
그런 다음 양식에 파일 열기 버튼을 추가하고 다음 클릭 이벤트 코드를 추가합니다.
스트림 ms;
바이트[] 피바이트;
//ofdSelectPic.ShowDialog();
if (ofdSelectPic.ShowDialog()==DialogResult.OK)
{
if ((ms=ofdSelectPic.OpenFile())!=null)
{
//MessageBox.Show("확인");
picbyte=새 바이트[ms.Length];
ms.위치=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.닫기();
}
}
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();
리더.읽기();
MemoryStream ms=new MemoryStream((byte[])reader["FImage"])
;
리더.닫기();
conn.Close();
ptbShow.Image=이미지;
원래 주소: http://stewen.cnblogs.com/archive/2005/12/20/300587.aspx