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.
Nadat het basisniveau van interoperabiliteit bekend is, moeten de databasefuncties die door de toepassing worden gebruikt, worden overwogen. Welke SQL-instructies worden bijvoorbeeld uitgevoerd door de toepassing? Gebruikt de toepassing schuifbare cursors? Transacties? Procedures? Lange gegevens? Zie de functiebeschrijvingen van SQLGetInfo, SQLSetConnectAttr en SQLSetStmtAttr en Bijlage C: SQL Grammar voor ideeën over welke functies mogelijk niet worden ondersteund door alle DBMSs. De functies die door een toepassing zijn vereist, kunnen sommige DBMS's verwijderen uit de lijst met doel-DBMS's. Ze kunnen ook laten zien dat de toepassing eenvoudig veel DBMS's kan targeten.
Als de vereiste functies bijvoorbeeld eenvoudig zijn, kunnen ze meestal worden geïmplementeerd met een hoge mate van interoperabiliteit. Een toepassing die een eenvoudige SELECT-instructie uitvoert en resultaten met een cursor voor alleen-doorsturen ophaalt, is waarschijnlijk zeer interoperabel vanwege de eenvoud: bijna alle stuurprogramma's en DBMSs ondersteunen de functionaliteit die nodig is.
Als de vereiste functies echter complexer zijn, zoals schuifbare cursors, geplaatste update- en verwijderinstructies en procedures, moeten er vaak afwegingen worden gemaakt. Er zijn verschillende mogelijkheden:
Lagere interoperabiliteit, meer functies. De toepassing bevat de functies, maar werkt alleen met DBMS's die deze ondersteunen.
Hogere interoperabiliteit, minder functies. De toepassing verwijdert de functies, maar werkt met meer DBMS's.
Hogere interoperabiliteit, optionele functies. De toepassing bevat de functies, maar maakt ze alleen beschikbaar met dbms die deze ondersteunen.
Hogere interoperabiliteit, meer functies. De toepassing maakt gebruik van de functies bij DBMS'en die deze ondersteunen en emuleert ze voor DBMS'en die dat niet doen.
De eerste twee gevallen zijn relatief eenvoudig te implementeren, omdat de functies worden gebruikt met alle ondersteunde DBMS's of met geen. De laatste twee gevallen zijn daarentegen complexer. Het is in beide gevallen noodzakelijk om te controleren of DBMS ondersteuning biedt voor de functies en in het laatste geval om een mogelijk grote hoeveelheid code te schrijven om deze functies te emuleren. Daarom is voor deze schema's waarschijnlijk meer ontwikkeltijd nodig en kan deze tijdens de uitvoering langzamer zijn.
Overweeg een algemene querytoepassing die verbinding kan maken met één gegevensbron. De toepassing accepteert een query van de gebruiker en geeft de resultaten weer in een venster. Stel dat deze toepassing één functie heeft waarmee gebruikers tegelijkertijd de resultaten van meerdere query's kunnen weergeven. Dat wil gezegd, ze kunnen een query uitvoeren en enkele resultaten bekijken, een andere query uitvoeren en enkele resultaten bekijken en vervolgens terugkeren naar de eerste query. Dit is een interoperabiliteitsprobleem omdat sommige stuurprogramma's slechts één actieve instructie ondersteunen.
De toepassing heeft een aantal keuzes op basis van wat het stuurprogramma retourneert voor de SQL_MAX_CONCURRENT_ACTIVITIES-optie in SQLGetInfo:
Zorg altijd voor ondersteuning van meerdere query's. Nadat er verbinding is gemaakt met een driver, controleert de toepassing het aantal actieve statements. Als het stuurprogramma slechts één actieve instructie ondersteunt, sluit de toepassing de verbinding en informeert de gebruiker dat het stuurprogramma geen vereiste functionaliteit ondersteunt. De toepassing is eenvoudig te implementeren en heeft volledige functionaliteit, maar heeft een lagere interoperabiliteit.
Ondersteun nooit meerdere query's. De toepassing verwijdert de functie helemaal. Het is eenvoudig te implementeren en heeft een hoge interoperabiliteit, maar heeft minder functionaliteit.
Ondersteuning voor meerdere query's alleen als het stuurprogramma dat doet. Nadat er verbinding is gemaakt met een stuurprogramma, controleert de toepassing het aantal actieve query's. Met de toepassing kan de gebruiker een nieuwe instructie starten wanneer er al een actief is als het stuurprogramma meerdere actieve instructies ondersteunt. De toepassing heeft een hogere functionaliteit en interoperabiliteit, maar is moeilijker te implementeren.
Ondersteun altijd meerdere query's en emuleer ze indien nodig. Nadat er verbinding is gemaakt met een stuurprogramma, controleert de toepassing het aantal actieve instructies. Met de toepassing kan de gebruiker altijd een nieuwe instructie starten wanneer deze al actief is. Als het stuurprogramma slechts één actieve instructie ondersteunt, opent de toepassing een extra verbinding met dat stuurprogramma en voert de nieuwe instructie voor die verbinding uit. De toepassing heeft volledige functionaliteit en hoge interoperabiliteit, maar is moeilijker te implementeren.