ErrorMadness Ответов: 1

Как я могу сохранить и получить шаблон отпечатка пальца в базе данных с помощью VB. (Цифровая персона)


У меня возникли проблемы с сохранением шаблона отпечатка пальца в байтах. Можете ли вы помочь мне решить эту проблему? Я не хочу сохранять отпечаток пальца в базе данных и извлекать его. Я пробовал коды с разных сайтов, но не могу получить то, что хочу. Пожалуйста помочь.

Что я уже пробовал:

Private Sub enrollment_OnEnroll(ByVal enrollmentControl As DPCtlUruNet.EnrollmentControl, ByVal result As DataResult(Of Fmd), ByVal fingerPosition As Integer) Handles enrollmentControl.OnEnroll
        If enrollmentControl.Reader IsNot Nothing Then
            SendMessage4("OnEnroll:  " & Convert.ToString(enrollmentControl.Reader.Description.Name) & ", finger " & fingerPosition)
            SendMessage4("Enrollment Finger Mask: " & _enrollmentControl.EnrolledFingerMask)
        Else
            SendMessage4("OnEnroll:  No Reader Connected, finger " & fingerPosition)
        End If

        Dim fingerprint As String
        Dim fp() As Byte

        Dim conn0 As New MySqlConnection
        Dim command0 As New MySqlCommand
        conn0.ConnectionString = "SERVER=localhost; USER ID=usr; PASSWORD=usrpass; DATABASE=ams2"
        ' Save the enrollment to file.
        If result IsNot Nothing AndAlso result.Data IsNot Nothing Then
            _sender.Fmds.Add(fingerPosition, result.Data)
            fingerprint = Fmd.SerializeXml(result.Data)

            Try
                fp = result.Data.Bytes
                conn0.Open()
                With command0
                    .Connection = conn0

                    .CommandTimeout = 99999
                    .CommandText = "set net_write_timeout=99999; set net_read_timeout=99999"
                    command0.ExecuteNonQuery()

                    .CommandText = "INSERT INTO pr_fingerprint(EMployee_ID, Finger_ID, Img, template)" & _
                        " VALUES(@EMployee_ID, @Finger_ID, @Img, @template)"
                    .Parameters.AddWithValue("@Employee_ID=", EmployeeID.Text)
                    .Parameters.AddWithValue("@Finger_ID=", fingerPosition)
                    .Parameters.AddWithValue("@Img", fp)
                    .Parameters.AddWithValue("@template", fingerprint)
                    .Parameters.Clear()
                    .ExecuteNonQuery()

                    .CommandText = "UPDATE pr_fingerprint f SET Finger_Name=" & _
                        "(SELECT Finger_Name FROM pr_fingers WHERE Finger_ID=f.`Finger_ID`) " & _
                        "WHERE ISNULL(f.`Finger_Name`)"
                    .ExecuteNonQuery()
                End With

                conn0.Close()
            Catch ex As Exception
                MsgBox(ex.Message & vbNewLine & vbNewLine & ex.StackTrace, MsgBoxStyle.Critical, "Error")
            End Try
        End If

        btnCancel.Enabled = False

        _sender.btnIdentificationControl.Enabled = True
    End Sub

Richard MacCutchan

- У меня неприятности ..."
Какого рода неприятности? Пожалуйста, отредактируйте свой вопрос и четко объясните, что не работает или какие неправильные результаты вы видите.

ErrorMadness

Ответ измените комментарий. Удалите комментарий.
У меня есть проблема при сравнении шаблонов, и я обнаружил, что XML не был полностью сохранен в БД, что и вызывает проблемы. Я изменил тип данных с Text на Varchar(MAX), и это решило проблему.

Rulph Buwen Tejano

Какая часть кода используется для сохранения отпечатка пальца в базе данных?

ErrorMadness

эта часть:

"Вставить в pr_fingerprint(EMployee_ID, Finger_ID, Img, template)" & _
"Ценности(@Ид_сотрудника, @Finger_ID, @ИМГ @шаблон)"
.Параметры.AddWithValue("@Employee_ID=", EmployeeID.Text)
.Параметры.AddWithValue("@Finger_ID=", fingerPosition)
.Параметры.AddWithValue ("@Img", fp)
.Параметры.AddWithValue("@template", отпечаток пальца)
.Параметры.Четкий()
.Метод executenonquery()

Rulph Buwen Tejano

спасибо :D

1 Ответов

Рейтинг:
11

ErrorMadness

Я уже нашел решение в том, как получить и сохранить шаблон отпечатка пальца, теперь я также могу сравнить шаблоны со сканированным отпечатком пальца.
Я использовал

Fmd.SerializeXml(result.Data)
при сохранении шаблона отпечатка пальца используется и Varchar(MAX) в качестве типа данных в базе данных. При сравнении шаблонов я загружаю все шаблоны из базы данных в массив
Private fingerList As New List(Of Fmd)

conn0.Open()
        command0.Connection = conn0
        command0.CommandText = "SELECT Template FROM pr_fingerprint"
        reader0 = command0.ExecuteReader
        With reader0
            While .Read
                s = .Item("Template")
                fingerList.Add(Fmd.DeserializeXml(s))
            End While
        End With
        conn0.Close()

Я сравниваю шаблоны пальцев с помощью
Dim identifyResult = Comparison.Identify(anyFinger, 0, fingerList, thresholdScore, 2)

И это успех.


raffie gollayan

Добрый день сэр,

Могу ли я попросить полный исходный код вашей программы?

Спасибо!

ErrorMadness

Код для десериализации XML?

XelaFig

Привет, пожалуйста, не могли бы вы поделиться полным кодом...