如何将指纹模板存储到sql server

时间:2014-03-12 11:30:45

标签: sql sql-server c#-4.0 fingerprint

我在SQL Server中存储fpt模板时遇到了麻烦。

这是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

//imports
using DHELTASSys.AuditTrail;
using DHELTASSys.Modules;

namespace Enrollment
{
    delegate void Function();   // a simple delegate for marshalling calls from event handlers to the GUI thread

    public partial class CreateAccount : Form
    {
        HRModuleBL obj = new HRModuleBL();
        DHELTASSysAuditTrail audit = new DHELTASSysAuditTrail();

        public CreateAccount(int emp_id)
        {
            InitializeComponent();
            audit.Emp_id = emp_id;
        }

        protected void EmptyFields()
        {

        }

        private void CloseButton_Click(object sender, EventArgs e)
        {
            Close();
        }


        private void OnTemplate(DPFP.Template template)
        {
            this.Invoke(new Function(delegate()
            {
                Template = template;
                VerifyButton.Enabled = SaveButton.Enabled = (Template != null);
                if (Template != null)
                    MessageBox.Show("The fingerprint template is ready for verification and saving", "Fingerprint Enrollment");
                else
                    MessageBox.Show("The fingerprint template is not valid. Repeat fingerprint enrollment.", "Fingerprint Enrollment");
            }));
        }

        private DPFP.Template Template;








        private void EnrollButton_Click(object sender, EventArgs e)
        {
            EnrollmentForm Enroller = new EnrollmentForm();
            Enroller.OnTemplate += this.OnTemplate;
            Enroller.ShowDialog();
        }

        private void SaveButton_Click(object sender, EventArgs e)
        {
            obj.Last_name = txtLastname.Text;
            obj.First_name = txtFirstName.Text;
            obj.Middle_name = txtMiddleName.Text;
            obj.Position_name = cmbPosition.Text;
            obj.Company_name = cmbCompany.Text;
            obj.Password = txtTempPassword.Text;
            obj.Department_name = cmbDepartment.Text;

            if (obj.Last_name == string.Empty) //Validation for empty texts
            {
                MessageBox.Show("Last name can't be empty!");
            } else if (obj.First_name == string.Empty) 
            {
                MessageBox.Show("First name can't be empty!");
            }
            else if (obj.Middle_name == string.Empty)
            {
                MessageBox.Show("Middle name can't be empty!");
            }
            else if (obj.Position_name == string.Empty)
            {
                MessageBox.Show("Position name can't be empty!");
            }
            else if (obj.Department_name == string.Empty)
            {
                MessageBox.Show("Deparment can't be empty!");
            }
            else if (obj.Company_name == string.Empty)
            {
                MessageBox.Show("Company name can't be empty!");
            }
            else if (obj.Password == string.Empty)
            {
                MessageBox.Show("Password can't be empty!");
            }
            else if (txtConfirmTempPassword.Text == string.Empty)
            {
                MessageBox.Show("Please verify your input password!");
            }
            else
            {

                if (txtTempPassword.Text != txtConfirmTempPassword.Text)
                {

                    MessageBox.Show("Password does not match", "Password Mismatch",
                        MessageBoxButtons.OK);
                }
                else
                {
                    MemoryStream fingerprintData = new MemoryStream();
                    Template.Serialize(fingerprintData);
                    fingerprintData.Position = 0;
                    BinaryReader br = new BinaryReader(fingerprintData);
                    byte[] bytes = br.ReadBytes((Int32)fingerprintData.Length);

                    obj.Biometric_code = bytes;
                    obj.AddAccountSetTempPassword();
                    audit.AddAuditTrail("Created account for " + obj.First_name + " " + obj.Last_name + ".");

                    MessageBox.Show("Account Created for " + txtLastname.Text + "," + txtFirstName.Text);

                    txtConfirmTempPassword.Text = "";
                    txtFirstName.Text = "";
                    txtLastname.Text = "";
                    txtMiddleName.Text = "";
                    txtTempPassword.Text = "";
                    cmbCompany.Text = "";
                    cmbDepartment.Text = "";
                    cmbPosition.Text = "";

                }
            }
        }

        private void VerifyButton_Click(object sender, EventArgs e)
        {
            VerificationForm Verifier = new VerificationForm();
            Verifier.Verify(Template);
        }
    }
}

其中我已经为用于向SQL Server插入数据的类启动了对象obj。 使用AddAccountSetTempPassword()方法,我将数据存储到数据库中。

问题是,当我查看数据库时,所有指纹数据的图像字段都写为0x53797374656D2E427974655B5D

更新#1 这是我用来将数据插入数据库的类。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

//Imports
using System.Data;
using DHELTASSys.DataAccess;
using DHELTASSys.AuditTrail;

namespace DHELTASSys.Modules
{
    class HRModuleBL
    {
        DHELTASSysAuditTrail audit = new DHELTASSysAuditTrail();

        private int emp_id;
        public int Emp_id
        {
            get { return emp_id; }
            set { emp_id = value; }
        }

        private string password;
        public string Password
        {
            get { return password; }
            set { password = value; }
        }

        private string last_name;
        public string Last_name
        {
            get { return last_name; }
            set { last_name = value; }
        }

        private string first_name;
        public string First_name
        {
            get { return first_name; }
            set { first_name = value; }
        }

        private string middle_name;
        public string Middle_name
        {
            get { return middle_name; }
            set { middle_name = value; }
        }

        private string position_name;
        public string Position_name
        {
            get { return position_name; }
            set { position_name = value; }
        }

        private string company_name;
        public string Company_name
        {
            get { return company_name; }
            set { company_name = value; }
        }

        private string email;
        public string Email
        {
            get { return email; }
            set { email = value; }
        }

        private string gender;
        public string Gender
        {
            get { return gender; }
            set { gender = value; }
        }

        private string address;
        public string Address
        {
            get { return address; }
            set { address = value; }
        }

        private string primary_Number;
        public string Primary_Number
        {
            get { return primary_Number; }
            set { primary_Number = value; }
        }

        private string alternative_Number;
        public string Alternative_Number
        {
            get { return alternative_Number; }
            set { alternative_Number = value; }
        }

        private string city;
        public string City
        {
            get { return city; }
            set { city = value; }
        }

        private DateTime birthdate;
        public DateTime Birthdate
        {
            get { return birthdate; }
            set { birthdate = value; }
        }

        private int sss_Number;
        public int Sss_Number
        {
            get { return sss_Number; }
            set { sss_Number = value; }
        }

        private int philHealth_number;
        public int Philhealth_number
        {
            get { return philHealth_number; }
            set { philHealth_number = value; }
        }

        private byte[] biometric_code;
        public byte[] Biometric_code
        {
            get { return biometric_code; }
            set { biometric_code = value; }
        }

        private string employee_status;
        public string Employee_status
        {
            get { return employee_status; }
            set { employee_status = value; }
        }

        private int company_id;
        public int Company_id
        {
            get { return company_id; }
            set { company_id = value; }
        }

        private string department_name;
        public string Department_name
        {
            get { return department_name; }
            set { department_name = value; }
        }

        //Methods

        //Create account and set temporary password for employee

        public void AddAccountSetTempPassword()
        {
            if (Position_name == "Supervisor") //If employee is supervisor
            {
                string cmd = "EXECUTE AddAccountSetTempPassword '" + Password + "',"
                + "'" + Last_name + "',"
                + "'" + First_name + "',"
                + "'" + Middle_name + "',"
                + "'" + Position_name + "',"
                + "'" + Company_name + "',"
                + "'" + Department_name + "',"
                + "'" + Biometric_code + "'";
                DHELTASSysDataAccess.Modify(cmd);

                string cmdTwo = "Execute AddSupervisor";
                DHELTASSysDataAccess.Modify(cmdTwo);
            }
            else //If employee isn't a supervisor
            {
                string cmd = "EXECUTE AddAccountSetTempPassword '" + Password + "',"
                + "'" + Last_name + "',"
                + "'" + First_name + "',"
                + "'" + Middle_name + "',"
                + "'" + Position_name + "',"
                + "'" + Company_name + "',"
                + "'" + Department_name + "',"
                + "'" + Biometric_code + "'";
                DHELTASSysDataAccess.Modify(cmd);

            }



        }


        //Employee will enter permanent password for account
        public void AddPermanentPasswordForAccount()
        {
            string cmd = "EXECUTE AddPermanentPasswordForAccount"
                + "'" + Password + "',"
                + "'" + Emp_id + "',";
            DHELTASSysDataAccess.Modify(cmd);
            //DHELTASSysAuditTrail.AddAuditTrail( "Changed password.");
        }

        //Employee adds his/her account details
        public void AddAccountDetails()
        {
            string cmd = "EXECUTE AddAccountDetails"
                + "'" + Email + "',"
                + "'" + Gender + "',"
                + "'" + Address + "',"
                + "'" + Primary_Number + "',"
                + "'" + Alternative_Number + "',"
                + "'" + City + "',"
                + "'" + Birthdate + "',"
                + "'" + Sss_Number + "',"
                + "'" + Philhealth_number + "',"
                + "'" + Emp_id + "'";
            DHELTASSysDataAccess.Modify(cmd);
            //DHELTASSysAuditTrail.AddAuditTrail("Account details updated.");
        }

        //Displays all employees' information
        public DataTable ViewEmployeeInformation()
        {
            string cmd = "EXECUTE ViewEmployeeInformation"
                + "'" + Company_id + "'";
            DataTable dtEmployees = DHELTASSysDataAccess.Select(cmd);
            return dtEmployees;
        }

        //Verifies account login in the forms application
        public DataTable AccountEnrollmentLogin()
        {
            string cmd = "EXECUTE AccountEnrollmentLogin"
                + "'" + Emp_id + "',"
                + "'" + Password + "'";
            DataTable dt = DHELTASSysDataAccess.Select(cmd);
            return dt;
        }

        //Check if HR Manager
        public DataTable CheckIfHRManager()
        {
            string cmd = "EXECUTE CheckIfHRManager"
                + "'" + Emp_id + "'";
            DataTable dt = DHELTASSysDataAccess.Select(cmd);
            return dt;
        }
    }
}

表格如下:

table : employee
emp_id->int->PK
password->nvarchar(MAX)
last_name->varchar(50)
first_name->varchar(50)
middle_name->varchar(50)
position_id->int->FK
department_id->int->FK
company_id->int->FK
email_address->varchar(50)
gender->varchar(10)
address->varchar(100)
primary_contact_number->varchar(20)
alternative_contact_number->varchar(20)
city->varchar(50)
birthdate->date
sssNumber->int
philhealth_number->int
employee_status->bit
biometrics_image->image

我希望将模板转换为字节以将其保存到数据库中。 提前谢谢。

0 个答案:

没有答案