2012-09-11 3 views
1

다른 형식의 파일 (Word 문서, PDF, TIF 등)을 저장하는 테이블이있는 SQL Server 2008 R2 데이터베이스가 있는데이 파일을 데이터베이스에서 성공적으로 검색 할 수 있습니다. 다음과 같은 방법데이터베이스에서 압축 파일 검색

개인 무효 GetFilesFromDatabase() 는 { 이 { const를 문자열 connStr = @ 시도 "데이터 원본 = 로컬 호스트 \의 SQLinstance를; 초기 카탈로그의 MyData; 통합 보안 = TRUE;"; // SQL Server 연결을 초기화하십시오. SqlConnection CN = 새 SqlConnection (connStr);

  //Initialize SQL adapter. 
      SqlDataAdapter ADAP = new SqlDataAdapter("Select ole_id, ole_object From OLE Where ole_id = 21601", CN); 

      //Initialize Dataset. 
      DataSet DS = new DataSet(); 

      //Fill dataset with FilesStore table. 
      ADAP.Fill(DS, "FilesStore"); 

      //Get File data from dataset row. 
      byte[] FileData = (byte[])DS.Tables["FilesStore"].Rows[0]["ole_object"]; 

      string FileName = @"C:\Temp\Text.doc"; 
      //Write file data to selected file. 
      using (FileStream fs = new FileStream(FileName, FileMode.Create)) 
      { 
       fs.Write(FileData, 0, FileData.Length); 
       fs.Close(); 
      } 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
    } 

이 파일은 특정 행에 포함 된 다른 정보에 따라 Word 문서 파일입니다. 파일을 디스크로 검색 한 후 파일을 열려고하면 데이터가 모두 횡설수설 한 것처럼 보이고 읽을 수 없습니다. 이제 나는이 파일들이 데이터베이스에 저장되기 전에 압축되었다고 생각하지만, 압축을 풀어서 어떻게 볼 수 있는지, 어떻게 이것을 수행 할 수 있는지에 대한 생각을 모르겠습니다. 나의 궁극적 인 목표는 이러한 이미지를 다른 데이터베이스로 옮기는 것입니다.

답변

1

파일을 저장하는 코드가 정상적으로 보입니다. 원래 데이터가 .DOC 파일이라고 가정하면 운명을 거의 잃은 후에 파일이 잘못되었습니다. 바이너리 편집기 (즉, Visual Studio의 편집기)에서 파일의 내용을보고 파일이 분명히 다른 내용이 아닌지 확인하는 것이 좋습니다 (text/image ....).

데이터베이스에 저장된 파일의 위치를 ​​묻는 것이 좋습니다. 압축, 암호화, 덩어리로 분할 또는 심지어 손상 될 수 있기 때문에 원격으로 응답 할 수있는 방법은 없습니다.

+0

개발자는 내 고객이 파일을 검색하는 데 비용을 지불하는 경우에만 도움을 줄 것 같습니다. 나는이 파일들이 아마도 OLE 객체라고 생각하고 있는데, 그 이유는 그것이 열의 이름이기 때문에 데이터 타입은 Image이다. 이것은 이상한 것입니다. –