Hoi,
Ik ben sinds kort bezig om met C# een webservice te bouwen. Dit gaat op zich heel soepel. De webservice controleert aan de hand van een aantal gegevens of iemand op een bepaalde manier is verzekerd (COV/Vecozo voor de kenners ).
Mijn vraag gaat over het BdpDataReader object. Meer specifiek over hoe je kan constateren of een query resultaten heeft opgeleverd. Het standaard voorbeeld uit de help ziet er alsvolgt uit:
De inhoud van de ShowData functie is in dit verband niet van belang, dus die heb ik maar weggelaten. Waar het me nu om gaat is hoe ik kan bepalen of de query iets opgeleverd heeft.Code:public static void ExecuteCommand ( BdpCommand Comm ) { Comm.CommandText = " SELECT * FROM EMPLOYEE"; Comm.Prepare(); BdpDataReader Reader = Comm.ExecuteReader(); if ( Reader != null ) { while (Reader.Read()) { ShowData(Reader); } Reader.Close(); } Comm.Close(); }
Wat ik tot nu toe heb vastgesteld:
- Het Reader object zelf heeft, voor zover ik heb kunnen ontdekken, geen property die aangeeft of er records in de resultset zitten.
- De controle of de Reader gelijk is aan Null is in mijn beleving enkel van belang wanneer er bij het uitvoeren van de query iets mis is gegaan. Het is dus niet zo dat de Reader null is wanneer de query geen resultaat oplevert.
- Het resultaat van de query is, om het in Delphi termen te zeggen, unidirectional. Ik kan dus niet even kijken of er records aanwezig zijn door het eerste record te lezen en dan weer van voren te beginnen (sowieso geen ideale oplossing).
Wat ik nog als oplossingen zie:
- Ik zou zelf een teller bij kunnen gaan houden binnen de Read() lus (hele primitieve oplossing).
- Ik kan van al m'n queries een sql 'count()' variant maken (onderhouds nachtmerrie).
Afsluitend kan ik me haast niet voorstellen dat er niet al iets is om deze controle uit te voeren. Heb enkel een beetje hulp nodig het te vinden. Help?
Grtz, Gerben
Bookmarks