C# 将指纹保存并提取到数据库

C# 将指纹保存并提取到数据库,c#,fingerprint,C#,Fingerprint,我使用的是数字人物U.are.U 5100指纹阅读器。我面临的问题是,注册只会暂时保存。如何将其保存到数据库中 /// <summary> /// Handler for when a fingerprint is captured. /// </summary> /// <param name="captureResult">contains info and data on the fingerprint capture</param> pri

我使用的是数字人物U.are.U 5100指纹阅读器。我面临的问题是,注册只会暂时保存。如何将其保存到数据库中

/// <summary>
/// Handler for when a fingerprint is captured.
/// </summary>
/// <param name="captureResult">contains info and data on the fingerprint capture</param>
private void OnCaptured(CaptureResult captureResult)
{
    try
    {
        // Check capture quality and throw an error if bad.
        if (!_sender.CheckCaptureResult(captureResult)) return;

        count++;

        DataResult<Fmd> resultConversion =  
        FeatureExtraction.CreateFmdFromFid(captureResult.Data, 
                                           Constants.Formats.Fmd.ANSI);

        SendMessage(Action.SendMessage, "A finger was captured.   
                    \r\nCount:  " + (count));

        if (resultConversion.ResultCode !=  
            Constants.ResultCode.DP_SUCCESS)
        {
            _sender.Reset = true;
            throw new Exception(resultConversion.ResultCode.ToString());
        }

        preenrollmentFmds.Add(resultConversion.Data);

        if (count >= 4)
        {
            DataResult<Fmd> resultEnrollment =  
            DPUruNet.Enrollment.CreateEnrollmentFmd(Constants.Formats.
                                                    Fmd.ANSI,  
                                                    preenrollmentFmds);

            if (resultEnrollment.ResultCode == 
                Constants.ResultCode.DP_SUCCESS)
            {
                SendMessage(Action.SendMessage, "An enrollment FMD was 
                            successfully created.");
                SendMessage(Action.SendMessage, "Place a finger on the 
                            reader.");
                preenrollmentFmds.Clear();
                count = 0;
                return;
            }
            else if (resultEnrollment.ResultCode == 
                     Constants.ResultCode.DP_ENROLLMENT_INVALID_SET)
            {
                SendMessage(Action.SendMessage, "Enrollment was 
                unsuccessful.  Please try again.");
                SendMessage(Action.SendMessage, "Place a finger on the  
                reader.");
                preenrollmentFmds.Clear();
                count = 0;
                return;
            }
        }

        SendMessage(Action.SendMessage, "Now place the same finger on the            
        reader.");
    }
    catch (Exception ex)
    {
           // Send error message, then close form
            SendMessage(Action.SendMessage, "Error:  " + ex.Message);                
    }  
}
//
///捕获指纹时的处理程序。
/// 
///包含有关指纹捕获的信息和数据
捕获私有void(CaptureResult CaptureResult)
{
尝试
{
//检查捕获质量,如果错误则抛出错误。
如果(!\u sender.CheckCaptureResult(captureResult))返回;
计数++;
数据结果转换=
FeatureExtraction.CreateFmdFromFid(captureResult.Data,
常量.Formats.Fmd.ANSI);
SendMessage(Action.SendMessage),捕获了一个手指。
\r\n计数:“+(计数));
如果(resultConversion.ResultCode!=
Constants.ResultCode.DP_成功)
{
_sender.Reset=true;
抛出新异常(resultConversion.ResultCode.ToString());
}
preenrollmentFmds.Add(resultConversion.Data);
如果(计数>=4)
{
DataResult结果滚动=
DPUruNet.Enrollment.CreateEnrollmentFmd(Constants.Formats)。
Fmd.ANSI,
预登记(FMDS);
如果(ResultRolliment.ResultCode==
Constants.ResultCode.DP_成功)
{
SendMessage(Action.SendMessage,“注册FMD已被删除。”
已成功创建“”);
SendMessage(Action.SendMessage,“将手指放在
读者。”);
preenrollmentFmds.Clear();
计数=0;
返回;
}
else if(resultrollment.ResultCode==
常量.ResultCode.DP\u注册\u无效\u集)
{
SendMessage(Action.SendMessage,“注册已完成”
不成功。请重试。“);
SendMessage(Action.SendMessage,“将手指放在
读者。”);
preenrollmentFmds.Clear();
计数=0;
返回;
}
}
SendMessage(Action.SendMessage,“现在将同一个手指放在
读者。”);
}
捕获(例外情况除外)
{
//发送错误消息,然后关闭表单
SendMessage(Action.SendMessage,“错误:+ex.Message”);
}  
}

我知道这是一个旧线程。但我最近才发现如何使用数字角色来实现这一点

试用

Fmd.SerializeXml(fmd);
Fmd.DeserializeXml(*retrieved string from database*);
它返回字符串,以便您可以将其直接保存为数据库中的字符串并按原样检索

然后在解码时尝试使用

Fmd.DeserializeXml(*retrieved string from database*);

它返回fmd,因此您现在可以将其与当前输入进行比较。

Hi,如果我的数据库中有大约100个fmd存储为100个字符串,为了比较它们(用于授权用户),我是否应该从数据库中获取所有fmd?最佳做法是什么?@Lichte Hi,你能解决吗?运气好吗?我正在寻找相同的…过了一段时间,我决定将指纹作为文件存储在连接指纹的设备上。我认为这样更安全,因为加密密钥的一部分是设备本身的mac。因此,即使加密文件被泄露,没有设备也无法解密@戴维诺雷纳