2014-05-20 5 views
2

생체 인식 템플릿 데이터를 이미 관리했지만 불행히도이를 데이터베이스에 직접 저장하거나 삽입 할 수 없습니다. 템플릿을 바이트로 변환하고 테이블로 덤프 할 수 없습니다. 내가 같은 오류가 나타납니다 SQL 스크립트로 Created_Date를 제거하더라도생체 인식 템플릿을 데이터베이스 (VB.Net)에 직접 저장하는 방법

Private Sub btnSaveFinger1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveFinger1.Click 
    Try 
     Dim sql As String 
      sql = "INSERT INTO [Kamog_HR].[dbo].[T_FingerPrintMaster] " & _ 
        "([fpm_EmployeeID] " & _ 
        ",[fpm_FingerIndex] " & _ 
        ",[fpm_FingerPrintTemplate] " & _ 
        ",[Update_By] " & _ 
        ",[Created_Date]) " & _ 
        "VALUES " & _ 
        "('" & txtEmpID.Text & "' " & _ 
        ",0 " & _ 
        ",@template " & _ 
        ",'SA' " & _ 
        ",'" & Now & "') " 
     OpenConnection() 
     Dim str As New MemoryStream 
     Enroller.Template.Serialize(str) 
     ExecuteSaveFingerPrint(sql, str) 
    Catch ex As Exception 
     SetPrompt("Cannot save the fingerprint template") 
    Finally 
     CloseConnection() 
    End Try 
End Sub 

Public Sub ExecuteSaveFingerPrint(ByVal sql As String, ByVal str As MemoryStream) 
    Dim cmd As New SqlCommand(sql, con) 
    cmd.CommandTimeout = 0 
    Dim serializedTemplate As Byte() = str.ToArray() 
    Dim paramater As New SqlParameter("@template", serializedTemplate) 
    cmd.Parameters.Add(paramater) 
    cmd.ExecuteNonQuery() 
End Sub 

cmd.ExecuteNonQuery 동안이

"Conversion failed when converting date and/or time from character string." 

을 말하는 오류 메시지를 반환 : 이것은 내 코드입니다. 나는 지문 템플릿을 데이터베이스에 직접 저장하거나 삽입 할 수있는 이유와 방법을 모른다.

+0

sql을 직접 코딩하고 보안 문제에 응용 프로그램을 노출하는 대신 ORM을 사용 해본 적이 있습니까? – linkerro

+0

대상 필드는 어떤 데이터 유형입니까? –

+0

나는 varbinary (MAX)를 fpm_FingerPrintTemplate에 사용하려고 시도했지만 varchar (MAX)로 변경했습니다. – Owell

답변

0

나는 이미 내 문제를 해결했다. 다음은 데이터베이스에 바이오 메트릭 템플릿을 삽입 한 샘플 코드입니다.

Private Sub btnSaveFinger1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveFinger1.Click 
    Try 
     Dim sql As String 
     If verifyFingerPrint() = True Then 
      sql = "" 
     Else 
      sql = "INSERT INTO [Kamog_HR].[dbo].[T_FingerPrintMaster] " & _ 
        "([fpm_EmployeeID] " & _ 
        ",[fpm_FingerIndex] " & _ 
        ",[fpm_FingerPrintTemplate] " & _ 
        ",[Update_By] " & _ 
        ",[Created_Date]) " & _ 
        "VALUES " & _ 
        "('" & txtEmpID.Text & "' " & _ 
        "," & GetFingerID() & " " & _ 
        ",@fptemp " & _ 
        ",'SA' " & _ 
        ",'" & Now & "') " 
     End If 
     OpenConnection() 
     Dim str As New MemoryStream 
     Enroller.Template.Serialize(str) 
     ExecuteSaveFingerPrint(sql, str) 
     MsgBox("Fingerprint Successfully Saved!", vbInformation, "Fingerprint") 
    Catch ex As Exception 
     MsgBox("Cannot save the fingerprint template. Please try again") 
     pbFinger1.Image = Nothing 
     pbFinger2.Image = Nothing 
     pbFinger3.Image = Nothing 
     pbFinger4.Image = Nothing 
     FingerIndex = 4 
     Enroller.Clear() 
     StopCapture() 
     OnTemplate(Nothing) 
     StartCapture() 
    Finally 
     CloseConnection() 
    End Try 
End Sub 

Public Sub ExecuteSaveFingerPrint(ByVal sql As String, ByVal str As MemoryStream) 
    Dim cmd As New SqlCommand(sql, con) 
    cmd.CommandType = CommandType.Text 
    Dim serializedTemplate As Byte() = str.ToArray() 
    Dim paramater As New SqlParameter("@fptemp", serializedTemplate) 
    cmd.Parameters.Add(paramater) 
    cmd.ExecuteNonQuery() 
End Sub 

고마워요!