Hola a todos,
Hace rato que nos posteaba, pero bueno, aquí seguimos presente.
Estoy un un proyecto, donde se hace el manejo de un dispositivio biometrico, este es un fingerprint, estoy haciendo el uso de unalibrería de GrFinger.
He seguido un manual (
aquí dejo el manual), y bueno todo ha salido bien.
El caso es, que la forma como estoy haciendo la verificación de la huella no es como la mas optima, ya que cuando hago el proceso de identificación, primero voy a la base de datos, saco todos las personas registradas, luego recorro la lista generada y ahí hago uso de la librería para comparar la huella almacenada en la bd contra la actual a verificar. Este proceso se esta tomando un tiempo que ya para el usuario es incomodo.
Ahora si vamos a ver algo de código y de ideas que eh tenido.
En inserción cuando hago el registro de una persona y su huella hago esto:
Estructura de la tabla
Código:
CREATE TABLE proveedor
(
prvnro smallint NOT NULL,
prvnit character(10) NOT NULL,
prvnom character(100) NOT NULL,
prvape1 character(60) NOT NULL,
prvape2 character(60) NOT NULL,
prvnom1 character(60) NOT NULL,
prvnom2 character(60) NOT NULL,
prvnomc character(60) NOT NULL,
prvdir character(100) NOT NULL,
prvtel character(10) NOT NULL,
prvhuella bytea NOT NULL,
CONSTRAINT proveedor_pkey PRIMARY KEY (prvnro)
)
Sentencia de inserción
Código:
strSql = "insert into PROVEEDOR(PRVNIT, PRVNOM, PRVAPE1, PRVAPE2, PRVNOM1, PRVNOM2, PRVNOMC, PRVDIR, PRVTEL, PRVHUELLA)"
+ " values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
Parate de ejecución de la sentencia de inserción
Código:
pstSentencia.setBinaryStream(10, aProveedor.getBytPrvhuella(), aProveedor.getLenDataHuella());
Ahora quiero hacer un Select donde PRVHUELLA sea igual a lo capturado por el dispositivo y he tratado de hacer esto:
Código:
String strSql = "select * from PROVEEDOR where PRVHUELLA = ?)";
…
pstSentencia.setBinaryStream(1, new ByteArrayInputStream(template.getData()), template.getData().length);
Pero no funciona.
Nota la variable template, esta basada según este
javadocs.
Me he sentado en el pgAdmin a revisar el tema y he logrado lanzar esta consulta:
Código:
select * from PROVEEDOR where PRVHUELLA::text like '%247%377%001%035-%';
Y por lo menos logro retornar un registro.
¿Cómo se puede hacer esta consulta desde Java?
Gracias.