Bezig met een project om FingerPrint reader software updaten. Hiervoor maak ik geen gebruik meer van een OleDbDataReader maar van de mogelijkheden die VS.NET 2005 bied aan TableSet en TableAdapters.
Helaas is de functie (GetBytes) die de byte's vanaf de database terugbrengt naar een object niet beschikbaar bij TableAdapters / Row.
Het opslaan van het Object in de database ziet er als volgt uit:
Dit werkt zonder problemen (Dit weet ik pas 100% zeker als ik de data kan terughalen)
Orginele code om de Byte uit de database weer op te zetten in het Object:
Helaas is deze code gemaakt om te gebruiken met een OleDbDataReader. Zelf maak ik nu gebruik van de TableSet en TableAdapter. Deze laat ik dan weer de data uitlezen met:
De foreach heb ik getest en die geeft de juiste data weer. Hierdoor loop ik vast op de oude code. Google heeft me niet de juiste informatie kunnen verschaffen om tot de oplossing te komen.
Kortom: Hoe kan ik ervoor zorgen dat de byte's uit de database weer terug woorden gezet naar een Object?
Helaas is de functie (GetBytes) die de byte's vanaf de database terugbrengt naar een object niet beschikbaar bij TableAdapters / Row.
Het opslaan van het Object in de database ziet er als volgt uit:
C#:
1
2
3
4
5
6
7
8
| /** Object omzetten naar Byte */ System.Byte[] temp = new System.Byte[tpt._size + 1]; System.Array.Copy(tpt._tpt, 0, temp, 0, tpt._size); try { fingerPrintAdapter.Insert(person.PersonID, flcID, temp); .............. |
Dit werkt zonder problemen (Dit weet ik pas 100% zeker als ik de data kan terughalen)
Orginele code om de Byte uit de database weer op te zetten in het Object:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| public TTemplate getTemplate(OleDbDataReader rs) { long readedBytes; tptBlob._size = 0; // alloc space System.Byte[] temp = new System.Byte[ (int)GRConstants.GR_MAX_SIZE_TEMPLATE]; // get bytes readedBytes = rs.GetBytes(1, 0, temp, 0,temp.Length); // copy to structure System.Array.Copy(temp, 0, tptBlob._tpt,0,(int)readedBytes); // set real size tptBlob._size = (int)readedBytes; return tptBlob; } |
Helaas is deze code gemaakt om te gebruiken met een OleDbDataReader. Zelf maak ik nu gebruik van de TableSet en TableAdapter. Deze laat ik dan weer de data uitlezen met:
C#:
1
2
3
| foreach (FlexAccessDataSet.module_fingerprintRow fingerPrintRow in fingerPrintData) { } |
De foreach heb ik getest en die geeft de juiste data weer. Hierdoor loop ik vast op de oude code. Google heeft me niet de juiste informatie kunnen verschaffen om tot de oplossing te komen.
Kortom: Hoe kan ik ervoor zorgen dat de byte's uit de database weer terug woorden gezet naar een Object?