2014-06-08 5 views
1

사용자 지문을 데이터베이스에 저장 한 다음 장치에서 가져온 응용 프로그램과 비교하려는 응용 프로그램을 개발 중입니다. varbinary (최대) 열을 byte []로 다시 변환하는 동안 특정 문제가 발생했습니다. GetSqlBinary 함수를 사용하려고했지만 그것을 indexoutofrangeException 제공합니다.SQL Server에서 varbinary (max) 열을 저장하고 검색하는 방법

데이터베이스에 템플릿을 저장하는 데 아래 코드를 사용하고 있지만 모든 사용자에 대해 값이 동일하다는 것을 알았습니다. 0x000000에서

public int insernewVoter(NSubject thumb) 
{ 
    connectionOpen(); 
    byteArray = thumb.GetTemplateBuffer().ToArray(); 
    int insert = 0; 

    cmd = new SqlCommand(); 
    cmd.Connection = con; 
    cmd.CommandText = "INSERT INTO VOTER (THUMB) VALUES(CONVERT(varbinary(max),'" + byteArray + "'))"; 
    int rowsupdated = cmd.ExecuteNonQuery(); 

    if (rowsupdated <= 0) { 
     MessageBox.Show("Ho Gya"); 
    } 
    else { 
     MessageBox.Show("AP MAR KYN NAI JATA :D"); 
    } 
    return 0; 
    connectionClose(); 
} 

사람은 내가 첫 번째 유형의 VARBINARY의 열에 바이트 []를 삽입하고이를 검색 할 수있는 방법을 저에게 제발 수 있습니다. 유 파일 형식으로 그 지문이있는 경우 u는 다음과 같은 코드를 사용할 수 있습니다 THN

+0

예 모든 사용자에게 동일한 값이 삽입됩니다. – Nosheen

답변

4

항상 매개 변수를 사용해야합니다. 이에게 탄 보내기

using(var conn = new SqlConnection("YOUR CONNECTION STRING ...")) 
using (var cmd = new SqlCommand("INSERT INTO VOTER (THUMB) VALUES(@THUMB)", conn)) { 
    conn.Open(); 
    var param = new SqlParameter("@THUMB", SqlDbType.Binary) { 
     // here goes your binary data (make sure it's correct) 
     Value = thumb.GetTemplateBuffer().ToArray() 
    }; 
    cmd.Parameters.Add(param); 
    int rowsAffected = cmd.ExecuteNonQuery(); 

    // do your other magic ... 
} 

편집을

당신이, 당신은 같은 것을 할 수있는 그것을 검색하는 방법을 요청했습니다 (당신의 정확한 요구 사항의 확실하지를하지만 당신에게 아이디어를 줄 것이다) 때문에 :

private byte[] GetThumbData(int userId) { 
    using (var conn = new SqlConnection("YOUR CONNECTION STRING ...")) 
    using (var cmd = new SqlCommand("SELECT THUMB FROM VOTER WHERE ID = @ID", conn)) { 
     conn.Open(); 
     cmd.Parameters.AddWithValue("@ID", userId); 
     return cmd.ExecuteScalar() as byte[]; 
    } 
} 
+0

삽입 후 어떻게 검색합니까? – Nosheen

+0

@ 노센 물론, 내 편집을 확인하십시오. –

+0

고마워요. 내 문제를 심각하게 해결해 주셔서 감사합니다. 약 4 일 동안이 일을하고 있었는데, 일종의 SDD 문제가 있다고 생각했습니다. – Nosheen

1

, WCH PDF

string filepath = Server.MapPath("~/pdf/" + file.FileName); 
    byte[] bytes = System.IO.File.ReadAllBytes(filepath); 

다시 바이트와 바이트로 PDF를 변환하고 지금 VARBINARY 의 데이터베이스 필드에이 통과 이 콘텐츠를 pdf로 가져올 수 있습니다.

byte[] pdfcontent = (byte[])DS.Tables[0].Rows[0]["PDFContent"]; 
관련 문제