Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit onderwerp is van toepassing op de MFC ODBC-klassen.
In dit onderwerp worden de gegevensleden beschreven die deel uitmaken van de architectuur van een recordsetobject:
Opmerking
Dit onderwerp is van toepassing op objecten die zijn afgeleid van CRecordset waaruit bulksgewijs ophalen van rijen niet is geïmplementeerd. Als bulksgewijs ophalen van rijen is geïmplementeerd, is de architectuur vergelijkbaar. Zie Recordset: Records in bulk ophalen (ODBC) om de verschillen te begrijpen.
Voorbeeldklasse
Opmerking
De wizard MFC ODBC Consumer is niet beschikbaar in Visual Studio 2019 en hoger. U kunt nog steeds handmatig een consument maken.
Wanneer u de wizard MFC ODBC Consumer van de wizard Klasse toevoegen gebruikt om een recordsetklasse te declareren die is afgeleid van CRecordset, heeft de resulterende klasse de algemene structuur die wordt weergegeven in de volgende eenvoudige klasse:
class CCourse : public CRecordset
{
public:
CCourse(CDatabase* pDatabase = NULL);
...
CString m_strCourseID;
CString m_strCourseTitle;
CString m_strIDParam;
};
Aan het begin van de class schrijft de wizard een set veldattributen. Wanneer u de klasse maakt, moet u een of meer veldgegevensleden opgeven. Als de klasse wordt geparameteriseerd, zoals de voorbeeldklasse is (met het gegevenslid m_strIDParam), moet u handmatig parametergegevensleden toevoegen. De wizard biedt geen ondersteuning voor het toevoegen van parameters aan een klasse.
Veldgegevensleden
De belangrijkste leden van uw recordsetklasse zijn de veldgegevensleden. Voor elke kolom die u selecteert in de gegevensbron, bevat de klasse een gegevenslid van het juiste gegevenstype voor die kolom. De voorbeeldklasse die aan het begin van dit onderwerp wordt weergegeven, heeft bijvoorbeeld twee veldgegevensleden, zowel type CString, aangeroepen m_strCourseID als m_strCourseTitle.
Wanneer de recordset een set records selecteert, worden de kolommen van de huidige record (na de Open aanroep, is de eerste record de huidige) automatisch gekoppeld aan de veldgegevensleden van het object. Dat wil gezegd, het framework gebruikt het juiste veldgegevenslid als buffer waarin de inhoud van een recordkolom wordt opgeslagen.
Wanneer de gebruiker naar een nieuwe record schuift, worden in het framework de veldgegevensleden gebruikt om de huidige record weer te geven. Het framework vernieuwt de gegevensvelden, waarbij de waarden van het vorige record worden vervangen. Veldgegevensleden worden ook gebruikt voor het bijwerken van het huidige record en voor het toevoegen van nieuwe records. Als onderdeel van het proces voor het bijwerken van een record geeft u de updatewaarden op door waarden rechtstreeks toe te wijzen aan het juiste lid of leden van de veldgegevens.
Gegevensleden van parameters
Als de klasse is geparameteriseerd, heeft deze een of meer parametergegevensleden. Met een geparameteriseerde klasse kunt u een recordsetquery baseren op gegevens die tijdens runtime zijn verkregen of berekend.
Normaal gesproken helpt de parameter de selectie te beperken, zoals in het volgende voorbeeld. Op basis van de voorbeeldklasse aan het begin van dit onderwerp kan het recordset-object de volgende SQL-instructie uitvoeren:
SELECT CourseID, CourseTitle FROM Course WHERE CourseID = ?
De '?' is een tijdelijke aanduiding voor een parameterwaarde die u tijdens runtime opgeeft. Wanneer u de recordset samenstelt en het gegevenslid instelt m_strIDParam op MATH101, wordt de effectieve SQL-instructie voor de recordset:
SELECT CourseID, CourseTitle FROM Course WHERE CourseID = MATH101
Door parametergegevensleden te definiëren, vertelt u het framework over parameters in de SQL-tekenreeks. Het framework verbindt de parameter, waarmee ODBC weet waar waarden moeten worden opgehaald om de tijdelijke aanduiding te vervangen. In het voorbeeld bevat de resulterende recordset alleen de record uit de tabel Course met een CourseID-kolom waarvan de waarde MATH101 is. Alle opgegeven kolommen van deze record zijn geselecteerd. U kunt zoveel parameters (en tijdelijke aanduidingen) opgeven als u nodig hebt.
Opmerking
MFC doet niets zelf met de parameters, met name het voert geen tekstvervanging uit. In plaats daarvan vertelt MFC ODBC waar de parameter moet worden opgeslagen; ODBC haalt de gegevens op en voert de benodigde parameterisatie uit.
Opmerking
De volgorde van parameters is belangrijk. Zie Recordset: Parameterizing a Recordset (ODBC) voor meer informatie over deze en meer informatie over parameters.
M_nFields en m_nParams gebruiken
Wanneer een wizard een constructor schrijft voor uw klasse, wordt ook het m_nFields gegevenslid geïnitialiseerd, waarmee het aantal veldgegevensleden in de klasse wordt opgegeven. Als u parameters aan uw klasse toevoegt, moet u ook een initialisatie toevoegen voor het m_nParams gegevenslid, waarmee het aantal parametergegevensleden wordt opgegeven. In het framework worden deze waarden gebruikt om met de gegevensleden te werken.
Zie Record Field Exchange: RfX gebruiken voor meer informatie en voorbeelden.
Zie ook
Recordset (ODBC)
Recordset: een klasse declareren voor een tabel (ODBC)
Record Field Exchange (RFX)