이미지를 삽입 할 사용자가있는 웹 응용 프로그램이 있습니다. 데이터베이스 (SQL Server 2008)
에 기본값 varbinary(MAX)
값을 설정하는 방법을 찾고 있습니다. 어쩌면 당신이 가입하면 기본 프로필 사진을 가지고 페이스 북과 같은 무언가. 이미지를 데이터베이스에 업로드하고 표시 할 수 있습니다. 그 이미지를 PDF 파일 (if the image column is NOT NULL)
으로 생성 할 수 있습니다. 그렇지 않으면 이미지 디코딩 오류가 발생하므로 이미지의 열이 삽입되지 않았 음을 나타 내기 위해 기본값 varbinary(MAX)
이미지가 필요합니다. 내 프로젝트에 정말 도움이 필요해.이미지의 기본 varbinary (최대) 값
답변
것은 당신이 내가 매일 생성되는 데이터의 대부분 FILESTREAM Overview
보고 권 해드립니다 저장 파일/이미지를 것이다 찾고 있다면 것은 구조화되지 않은 데이터, 텍스트 문서, 이미지, 동영상 등의 입니다. 이 비정형 데이터는 종종 구조화 된 데이터와 별도로 데이터베이스 외부에 저장된 입니다. 이 분리로 인해 데이터 관리가 복잡해질 수 있습니다. 또는 구조적 저장소와 관련된 데이터가 인 경우 파일 스트리밍 기능 및 성능을 제한 할 수 있습니다.
FILESTREAM은 파일 시스템에 varbinary (max) BLOB (Binary Large Object) 데이터를 개의 파일로 저장하여 SQL Server 데이터베이스 엔진을 NTFS 파일 시스템과 통합합니다. Transact-SQL 문은 쿼리, 검색 및 FILESTREAM 데이터 백업을 삽입, 업데이트 할 수 있습니다. Win32 파일 시스템 인터페이스는 데이터에 대한 스트리밍 액세스를 제공합니다.
FILESTREAM은 파일 시스템 데이터를 캐싱하기 위해 NT 시스템 캐시를 사용합니다. 따라서 은 FILESTREAM 데이터가 데이터베이스 엔진 성능에 미칠 영향을 줄이는 데 도움이됩니다. SQL Server 버퍼 풀이 사용되지 않습니다. 따라서이 메모리는 쿼리 처리에 사용할 수 있습니다.
말하려고하는 것을 정말로 이해하지 못합니다. – XiAnG
이 같은 코드를 사용하여 SQL 행으로, 이미지, 또는 모든 종류의 파일을 삽입 할 수 있습니다 :이 사용
는/*get blob from file, store in variable*/
declare @blob as varbinary(max)
set @blob = (
Select BulkColumn from Openrowset
(Bulk 'c:\temp\MyImage.jpg', Single_Blob) as tt)
/* insert blob into row */
insert into dbo.MyImageTable (Name, Blob)
values('SomeName',@blob)
, 당신은 단지 연결 후 테이블에 하나의 기본 이미지를 저장할 수 있습니다 다음과 같은 간단한 조인을 사용하여 기본 이미지가 필요한 행에 표시합니다.
select * from MyData join MyImageTable on MyImageTable.Name='SomeName'
데이터베이스에 기본 항목이 * 있습니까? 그렇게 많은 공간을 낭비하기 때문에. 왜 당신이 변수에서 한 번 기본 이미지를 가지고 그것을 사용하는 소프트웨어 측면을 잡으려고하지 마라 : if (column == null || column == DBNull.Value) {column = defaultImage; }'? – Corak
내 프로젝트에 기본 이미지가있는 경우이 메서드를 사용하십시오. if (column == null || column == DBNull.Value) {column = defaultImage; }'null에있는 열이 있는지 확인하려면? null의 경우, 열의 데이터를 나타 내기 위해서 (때문에) 디폴트의 이미지를 사용합니까? – XiAnG
예, 불필요한 데이터로 데이터베이스를 채울 필요가 없습니다. 더 좋은 방법은 ImageID와 varbinary가있는 별도의 이미지 테이블을 만든 다음 해당 ImageID를 다른 테이블의 ForeignKey로 참조하는 것입니다. 그래서 예를 들어 첫 번째 이미지 ('ImageID = 1')는 기본 이미지가 될 수 있고 다른 테이블 (들)에는 기본값 인'ForeignKey Field '가 있습니다. – Corak