본문 바로가기
C#

C#으로 이미지파일을 DB에 넣는방법

by violetoz 2013. 4. 24.

프로젝트 만들기
   
    MyImages라는 이름의 테이블을 SQL Server Northwind 데이터베이스에 추가합니다. 테이블에 다음 필드를
   포함시킵니다.
    형식이 Int인 "ID"라는 필드 길이가 50이고 형식이 VarChar인 "Description"이라는 필드 형식이 Image인 
    "ImgField"라는 필드


    Studio .NET을 열고 새로운 Visual C# Windows 응용 프로그램 프로젝트를 만듭니다.   
     도구 상자를 사용하여 두 개의 Button 컨트롤을 기본 폼인 Form1에 추가합니다.
     속성 창에서 Button1의 Text 속성을 Save to Database(from File)로 변경하고 Button2의
    Text 속성을 Save to File(from Database)로 변경합니다.
     코드 창의 맨 위에 다음 코드를 추가합니다.

using System.Data;
using System.Data.SqlClient;
using System.IO;



    Button1을 두 번 눌러 이벤트 처리기를 추가합니다.
    Button1_Click 이벤트 처리기에 다음 코드를 추가합니다.
   

{
    SqlConnection con = new SqlConnection("Server=Darkover;uid=sa;pwd=Password1;database=northwind");
    SqlDataAdapter da = new SqlDataAdapter("Select * From MyImages", con);
    SqlCommandBuilder MyCB = new SqlCommandBuilder(da);
    DataSet ds = new DataSet("MyImages");

    da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
    FileStream fs = new FileStream(@"C:\winnt\Gone Fishing.BMP", FileMode.OpenOrCreate, FileAccess.Read);
            
    byte[] MyData= new byte[fs.Length];
    fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));
            
    fs.Close();
            
    da.Fill(ds,"MyImages");
                
    DataRow myRow;
    myRow=ds.Tables["MyImages"].NewRow();

    myRow["Description"] = "This would be description text";
    myRow["imgField"] = MyData;
    ds.Tables["MyImages"].Rows.Add(myRow);
    da.Update(ds, "MyImages");

    con.Close();
        
 }



    Button2를 두 번 눌러 이벤트 처리기를 추가합니다.
    Button2_Click 이벤트 처리기에 다음 코드를 추가합니다.

{
     SqlConnection con = new SqlConnection("Server=Darkover;uid=sa;pwd=Password1;database=northwind");
     SqlDataAdapter da = new SqlDataAdapter("Select * From MyImages", con);
     SqlCommandBuilder MyCB = new SqlCommandBuilder(da);
     DataSet ds = new DataSet("MyImages");

     byte[] MyData= new byte[0];
            
     da.Fill(ds, "MyImages");
     DataRow myRow;
     myRow=ds.Tables["MyImages"].Rows[0];
           
     MyData =  (byte[])myRow["imgField"];
     int ArraySize = new int();
     ArraySize = MyData.GetUpperBound(0); 

     FileStream fs = new FileStream(@"C:\winnt\Gone Fishing2.BMP", FileMode.OpenOrCreate, FileAccess.Write);
     fs.Write(MyData, 0,ArraySize);
     fs.Close();
 }



    F5 키를 눌러 응용 프로그램을 컴파일하고 실행합니다.
    Save to Database(from File)를 눌러 이미지 C:\WinNT\Gone Fishing.bmp를 SQL Server Image 필드로 로드합니다.
     Save to File(from Database)을 눌러 SQL Server Image 필드의 데이터를 파일로 저장합니다.

'C#' 카테고리의 다른 글

C# 문자열 조작  (0) 2013.04.26
C# thread에 파라미터 전달하기  (0) 2013.04.24
다중 쓰레드  (0) 2013.04.24
C# ThreadPool Usage  (0) 2013.04.24
thread pool 이용하기  (0) 2013.04.24