Задача : у меня есть 30 000 записей отпечатков пальцев в базе данных SQL Server, которая имеет тип данных binary(2000)
, и она была зарегистрирована до выпуска DigitalPersona SDK.
Я разрабатывал приложение на C # с использованием Griaule (GrFinger) SDK. Я использую Griaule SDK, потому что 5 лет назад я уже разработал приложение, использующее VB6, и у меня нет никаких проблем с ним, я быстро набираю данные, используя 1: N, но теперь я не знаю, как сравнивать или преобразовывать шаблон с использованием GrFinger для записи DigitalPersona. Я новичок в C #, поэтому я надеялся на ваше понимание, если у меня могут быть некоторые разъяснения, когда дело доходит до C #.
Как мне решить эту проблему?
Скриншот :
Код
public int Identify(ref int score, string sqlQuery)
{
GRConstants result;
int id;
OleDbDataReader rs;
TTemplate tptRef;
// Checking if template is valid.
if (!TemplateIsValid()) return ERR_INVALID_TEMPLATE;
// Starting identification process and supplying query template.
result = (GRConstants)_grfingerx.IdentifyPrepare(ref _tpt._tpt,(int)GRConstants.GR_DEFAULT_CONTEXT);
// error?
if (result < 0) return (int)result;
// Getting enrolled templates from database.
rs = _DB.getTemplates(sqlQuery);// query source is "select EmployeeFingerPrint,EmployeeID from RegFingers"
while (rs.Read())
{
// Getting current template from recordset.
tptRef = _DB.getTemplate(rs);
// Comparing current template.
result = (GRConstants)_grfingerx.Identify(ref tptRef._tpt,ref score, (int)GRConstants.GR_DEFAULT_CONTEXT);
// Checking if query template and the reference template match.
if (result == GRConstants.GR_MATCH)
{
id = _DB.getId(rs);
rs.Close();
return id;
}
else if (result < 0)
{
rs.Close();
return (int)result;
}
}
// Closing recordset.
rs.Close();
return (int)GRConstants.GR_NOT_MATCH;
}
// Returns an OleDbDataReader with all enrolled templates from database.
public OleDbDataReader getTemplates(string sqlQuery)
{
OleDbCommand cmdGetTemplates;
OleDbDataReader rs;
//setting up command
cmdGetTemplates = new OleDbCommand(sqlQuery, _connection);
rs = cmdGetTemplates.ExecuteReader();
return rs;
}
// Return template data from an OleDbDataReader
public TTemplate getTemplate(OleDbDataReader rs)
{
long readedBytes;
tptBlob._size = 0;
Byte[] temp = new Byte[(int)GRConstants.GR_MAX_SIZE_TEMPLATE];// alloc space
readedBytes = rs.GetBytes(0, 0, temp, 0, (int)temp.Length);// get bytes
Array.Copy(temp, 0, tptBlob._tpt, 0, (int)readedBytes);// copy to structure
tptBlob._size = (int)readedBytes;// set real size
return tptBlob;
}