Dela via


MFC: Använda databasklasser med dokument och vyer

Du kan använda MFC-databasklasserna med eller utan dokument-/vyarkitekturen. I det här avsnittet betonas arbetet med dokument och vyer. Den förklarar:

Alternativ finns i MFC: Använda databasklasser utan dokument och vyer.

Skriva ett Form-Based-program

Många dataåtkomstprogram baseras på formulär. Användargränssnittet är ett formulär som innehåller kontroller där användaren undersöker, anger eller redigerar data. För att göra ansökningsformuläret formulärbaserat, använd klassen CRecordView. När du kör MFC-programguiden och väljer ODBC-klienttyp på sidan Databassupport används CRecordView projektet för visningsklassen.

I ett formulärbaserat program lagrar varje postvyobjekt en pekare till ett CRecordset objekt. Ramverkets postfältsutbytesmekanism (RFX) utbyter data mellan postuppsättningen och datakällan. Mekanismen för dialogdatautbyte (DDX) utbyter data mellan fältmedlemmarna i recordset-objektet och kontrollerna på formuläret. CRecordView innehåller också standardfunktioner för att hantera kommandon för navigering från post till post i formuläret.

Information om hur du skapar ett formulärbaserat program med programguiden finns i Skapa en Forms-Based MFC-program - och databassupport, MFC-programguiden.

En fullständig diskussion om formulär finns i Arkivhandlingsvyer.

Använda postuppsättningar i dokument och vyer

Många enkla formulärbaserade program behöver inte dokument. Om programmet är mer komplext vill du förmodligen använda ett dokument som proxy för databasen och lagra ett CDatabase objekt som ansluter till datakällan. Formulärbaserade program lagrar vanligtvis en pekare till ett postmängdsobjekt i vyn. Andra typer av databasapplikationer lagrar rekorduppsättningar och CDatabase objekt i dokumentet. Här är några möjligheter att använda dokument i databasprogram:

  • Om du kommer åt en postuppsättning i ett lokalt sammanhang, skapa då ett CRecordset-objekt lokalt i dokumentets eller vyns medlemsfunktioner, vid behov.

    Deklarera ett postuppsättningsobjekt som en lokal variabel i en funktion. Skicka NULL till konstruktorn, vilket gör att ramverket skapar och öppnar ett tillfälligt CDatabase objekt åt dig. Alternativt kan du skicka en pekare till ett CDatabase objekt. Använd postuppsättningen i funktionen och låt den förstöras automatiskt när funktionen avslutas.

    När du skickar NULL till en konstruktor för en postuppsättning använder ramverket information som returneras av postuppsättningens GetDefaultConnect medlemsfunktion för att skapa ett CDatabase objekt och öppna det. Guiderna implementerar GetDefaultConnect åt dig.

  • Om du hanterar en postuppsättning under hela dokumentets livstid, bädda in ett eller flera CRecordset-objekt i dokumentet.

    Konstruera postuppsättningsobjekten antingen när du initierar dokumentet eller efter behov. Du kan skriva en funktion som returnerar en pekare till postuppsättningen om den finns redan eller skapar och öppnar postuppsättningen om den ännu inte finns. Stäng, ta bort och återskapa postuppsättningen efter behov eller anropa dess Requery medlemsfunktion för att uppdatera posterna.

  • Om du kommer åt en datakälla under dokumentets livslängd bäddar du in ett CDatabase objekt eller lagrar en pekare till ett CDatabase objekt i det.

    Objektet CDatabase hanterar en anslutning till datakällan. Objektet konstrueras automatiskt under dokumentkonstruktionen och du anropar dess Open medlemsfunktion när du initierar dokumentet. När du skapar postuppsättningsobjekt i dokumentmedlemsfunktioner skickar du en pekare till objektet CDatabase i dokumentet. Detta associerar varje postuppsättning med dess datakälla. Databasobjektet förstörs vanligtvis när dokumentet stängs. Postmängdsobjekten förstörs vanligtvis när de lämnar en funktions omfång.

Andra faktorer

Formulärbaserade program har ofta ingen användning för ramverkets mekanism för dokumentserialisering, så du kanske vill ta bort, inaktivera eller ersätta kommandona Nytt och ÖppnaArkiv-menyn . Se artikeln Serialisering: Serialisering jämfört med databasindata/utdata.

Du kanske också vill använda de många användargränssnittsmöjligheter som ramverket kan stödja. Du kan till exempel använda flera CRecordView objekt i ett delningsfönster, öppna flera postuppsättningar i olika underordnade fönster för flera dokumentgränssnitt (MDI) och så vidare.

Du kanske vill implementera utskrift av det som finns i din vy, oavsett om det är ett formulär som implementerats med CRecordView eller något annat. Eftersom klasser härleds från CFormViewstöder CRecordView inte utskrift, men du kan åsidosätta OnPrint medlemsfunktionen för att tillåta utskrift. Mer information finns i klassen CFormView.

Du kanske inte vill använda dokument och vyer alls. I så fall kan du läsa MFC: Använda databasklasser utan dokument och vyer.

Se även

MFC-databasklasser