[SQL] 비주얼 C #을 사용하여 SQL 데이터베이스에 이미지를 추가
SQL비주얼 C #을 사용하여 SQL 데이터베이스에 이미지를 추가
나는 이미지 processing.I에 대한 시각적 C # 프로그램 일하고 것은 비주얼 C # (Windows Forms의)와 ADO.NET을 사용하여 SQL 데이터베이스에 이미지를 추가하려합니다.
나는 파일 스트림 방법과 바이너리 형식으로 이미지를 변환했지만 이미지 바이트는 데이터베이스에 저장되지 않아요. 데이터베이스 이미지 열, 그것은 말한다 <바이너리 데이터를>과 데이터가 저장되지지고 있습니다!
나는 (저장 procedures..etc로 및없이) 삽입하지만 항상 데이터베이스에서 같은 일을 얻기를 위해 많은 방법을 시도했습니다.
private void button6_Click(object sender, EventArgs e)
{
try
{
byte[] image = null;
pictureBox2.ImageLocation = textBox1.Text;
string filepath = textBox1.Text;
FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
image = br.ReadBytes((int)fs.Length);
string sql = " INSERT INTO ImageTable(Image) VALUES(@Imgg)";
if (con.State != ConnectionState.Open)
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.Add(new SqlParameter("@Imgg", image));
int x= cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show(x.ToString() + "Image saved");
}
}
나는 코드에서 오류가 발생하고 있지 않다. 이미지가 변환있어 및 항목은 데이터베이스에서 수행하지만 말한다는 <이진 데이터> SQL 데이터베이스에서.
해결법
-
==============================
1.선택된 파일 스트림이 바이트 배열로 변환한다.
선택된 파일 스트림이 바이트 배열로 변환한다.
FileStream FS = new FileStream(filepath, FileMode.Open, FileAccess.Read); //create a file stream object associate to user selected file byte[] img = new byte[FS.Length]; //create a byte array with size of user select file stream length FS.Read(img, 0, Convert.ToInt32(FS.Length));//read user selected file stream in to byte array
이제이 잘 작동합니다. 여전히 데이터베이스 쇼 <이진 데이터>하지만 MemoryStream을 방법을 사용하여 이미지 변환 돌아올 수 있습니다.
모두에게 감사 ...
-
==============================
2.이 같은 뭔가 시도 :
이 같은 뭔가 시도 :
byte[] fileBytes=System.IO.File.ReadAllBytes("path to file"); System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand("insert into table(blob,filename) values (@blob,@name)"); command.Parameters.AddWithValue("blob", fileBytes); command.Parameters.AddWithValue("name", "filename"); command.ExecuteNonQuery();
-
==============================
3.당신이 VARBINARY이 이미지를 저장하는 데 사용하고 있다고 가정하면 (당신이해야하는), 당신은 당신의 SqlParameter에 더 강력하게 입력해야 할 수도 있습니다 :
당신이 VARBINARY이 이미지를 저장하는 데 사용하고 있다고 가정하면 (당신이해야하는), 당신은 당신의 SqlParameter에 더 강력하게 입력해야 할 수도 있습니다 :
그래서 대신
cmd.Parameters.Add(new SqlParameter("@Imgg", image));
당신은 사용합니다 :
cmd.Parameters.Add("@Imgg", SqlDbType.VarBinary).Value = (SqlBinary)image;
또한 바이트 배열에 파일 경로를 돌려 코드를 단축 System.IO.File.ReadAllBytes를 사용할 수 있습니다.
-
==============================
4.이 저장 프로 시저를 실행합니다 :
이 저장 프로 시저를 실행합니다 :
create procedure prcInsert ( @txtEmpNo varchar(6), @photo image ) as begin insert into Emp values(@txtEmpNo, @photo) end
EMP 테이블 :
create table Emp ( [txtEmpNo] [varchar](6) NOT NULL, imPhoto image )
from https://stackoverflow.com/questions/19817552/adding-an-image-to-sql-database-using-visual-c-sharp by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 예외 java.sql.SQLException의 (0, 1> 파라미터의 수)의 범위 중 정수 인덱스 [중복] (0) | 2020.07.14 |
---|---|
[SQL] (+)는 오라클 SQL의 기능은 무엇입니까? (0) | 2020.07.14 |
[SQL] 여러 열에 대한 고유 값을 선택 (0) | 2020.07.14 |
[SQL] SQL 매개 변수를 사용하여 (이미지 일명) 삽입 / 업데이트 TBlobfield (0) | 2020.07.14 |
[SQL] SQL에서 정렬되지 않은 결과 (0) | 2020.07.14 |