728x90
300x250
[C#.NET] - MySQL Blob 이미지 읽기, 저장하기
이번에 소개할 것은 C#에서 MySQL Blob를 사용하는 방법에 대해서 소개하려고 합니다.
1. 사용자 인터페이스 구현
그림1) 사용자 인터페이스 설계
c#에서 위의 그림처럼 작성합니다.
2. MySQL - Blob (이미지 저장)
private void Btn_Save_Click(object sender, EventArgs e) { string SQL; UInt32 FileSize; byte[] rawData; FileStream fs; string ConString = "Server=hostName;Database=dbName;" + "Uid=userID;Pwd=userPasswd;"; MySqlConnection con = new MySqlConnection(ConString); MySqlCommand cmd = new MySqlCommand(); BinaryReader br; try { fs = new FileStream(@txtPath.Text, FileMode.Open, FileAccess.Read); FileSize = (UInt32)fs.Length; rawData = new byte[FileSize]; fs.Read(rawData, 0, (int)FileSize); fs.Close(); con.Open(); SQL = "INSERT INTO blob_tbl VALUES(NULL, @FileName, @FileSize, @File)"; cmd.Connection = con; cmd.CommandText = SQL; cmd.Parameters.AddWithValue("@FileName", txtPath.Text); cmd.Parameters.AddWithValue("@FileSize", FileSize); cmd.Parameters.AddWithValue("@File", rawData); cmd.ExecuteNonQuery(); MessageBox.Show("File Inserted into database successfully!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); con.Close(); } catch (MySql.Data.MySqlClient.MySqlException ex) { MessageBox.Show("Error " + ex.Number + " has occurred: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } // end of try to catch finally } |
표1) 이미지 저장 소스코드 |
2. MySQL - Blob (이미지 읽기)
private void Btn_dbLoad_Click(object sender, EventArgs e) { string SQL; string FileName; UInt32 FileSize; byte[] rawData; FileStream fs; string ConString = "Server=hostName;Database=dbName;" + "Uid=userID;Pwd=userPasswd;"; MySqlConnection con = new MySqlConnection(ConString); MySqlCommand cmd = new MySqlCommand(); string query = "SELECT * from blob_tbl"; try { con.Open(); cmd.Connection = con; cmd.CommandText = query; MySqlDataReader myData = cmd.ExecuteReader(); if (!myData.HasRows) throw new Exception("There are no BLOBs to save"); myData.Read(); FileSize = myData.GetUInt32(myData.GetOrdinal("filesize")); rawData = new byte[FileSize]; myData.GetBytes(myData.GetOrdinal("file"), 0, rawData, 0, (int)FileSize); FileName = @System.IO.Directory.GetCurrentDirectory() + "\\newfile.png"; fs = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write); fs.Write(rawData, 0, (int)FileSize); fs.Close(); MessageBox.Show("File successfully written to disk!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); pbBlobImg.Image = Image.FromFile(FileName); myData.Close(); con.Close(); } catch (MySql.Data.MySqlClient.MySqlException ex) { MessageBox.Show("Error " + ex.Number + " has occurred: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } |
표2) 이미지 읽기 소스코드 |
4. 소스코드
5. 데이터베이스 설계
그림2) 데이터베이스 설계
6. 시연
그림3) 시연하기
7. 참고자료(Reference)
https://dev.mysql.com/doc/connector-net/en/connector-net-programming-blob-writing.html
반응형
'소프트웨어(SW) > MS - Visual C#.NET' 카테고리의 다른 글
[C#.NET] A 폼 닫고 B 폼 열기 (1) | 2018.07.30 |
---|---|
[C#.NET] 동적 컨트롤 제어에 관한 방법 (2) | 2014.02.02 |
[C#.NET] DirectoryInfo - 디렉토리 내 파일 무시하고 강제 삭제 (2) | 2013.12.16 |
[C#.NET] AES를 통한 파일 암호화 구현 예제 (2) | 2013.12.09 |
[ExcelObj].NET 개발자의 관점에서 파악한 Excel 개체 모델 - VS2012기준 (2) | 2013.08.11 |