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.
Wanneer een ODBC 2.x-toepassing wordt bijgewerkt naar ODBC 3.x, moet deze zodanig worden geschreven dat deze werkt met zowel ODBC 2.x - als 3.x-stuurprogramma's . De toepassing moet voorwaardelijke code bevatten om optimaal te profiteren van de ODBC 3.x-functies .
Het SQL_ATTR_ODBC_VERSION omgevingskenmerk moet worden ingesteld op SQL_OV_ODBC2. Dit zorgt ervoor dat het stuurprogramma zich gedraagt als een ODBC 2.x-stuurprogramma met betrekking tot de wijzigingen die worden beschreven in de sectie Gedragswijzigingen.
Als de toepassing een van de functies gebruikt die worden beschreven in de sectie Nieuwe functies, moet voorwaardelijke code worden gebruikt om te bepalen of het stuurprogramma een ODBC 3.x - of ODBC 2.x-stuurprogramma is. De toepassing maakt gebruik van SQLGetDiagField en SQLGetDiagRec om ODBC 3.x SQLSTATEs te verkrijgen tijdens het verwerken van fouten in deze voorwaardelijke codefragmenten. De volgende punten over de nieuwe functionaliteit moeten worden overwogen:
Een toepassing die wordt beïnvloed door de wijziging in het gedrag van de rijsetgrootte, moet ervoor zorgen dat SQLFetch niet wordt aangeroepen wanneer de matrix groter is dan 1. Deze toepassingen moeten aanroepen naar SQLExtendedFetch vervangen door aanroepen naar SQLSetStmtAttr om het kenmerk SQL_ATTR_ARRAY_STATUS_PTR instructie en sqlFetchScroll in te stellen, zodat ze algemene code hebben die werkt met zowel ODBC 3.x - als ODBC 2.x-stuurprogramma's . Omdat SQLSetStmtAttr met SQL_ATTR_ROW_ARRAY_SIZE wordt toegewezen aan SQLSetStmtAttr met SQL_ROWSET_SIZE voor ODBC 2.x-stuurprogramma's , kunnen toepassingen gewoon SQL_ATTR_ROW_ARRAY_SIZE instellen voor hun multirow-ophaalbewerkingen.
De meeste toepassingen die worden bijgewerkt, worden niet daadwerkelijk beïnvloed door wijzigingen in SQLSTATE-codes. Voor toepassingen die worden beïnvloed, kunnen ze in de meeste gevallen een mechanische zoekopdracht uitvoeren en vervangen met behulp van de foutconversietabel in de sectie 'SQLSTATE-toewijzing' om ODBC 3.x-foutcodes te converteren naar ODBC 2.x-codes . Omdat ODBC 3.x Driver Manager toewijzingen uitvoert van ODBC 2.x SQLSTATEs naar ODBC 3.x SQLSTATEs, hoeven deze toepassingsschrijvers alleen te controleren op de ODBC 3.x SQLSTATEs en hoeft u zich geen zorgen te maken over het opnemen van ODBC 2.x SQLSTATEs in voorwaardelijke code.
Als een toepassing optimaal gebruik maakt van gegevenstypen datum, tijd en tijdstempel, kan de toepassing zichzelf declareren als een ODBC 2.x-toepassing en de bestaande code gebruiken in plaats van de conditioneringscode te gebruiken.
De upgrade moet ook de volgende stappen bevatten:
Roep SQLSetEnvAttr aan voordat u een verbinding toedeelt om het SQL_ATTR_ODBC_VERSION omgevingskenmerk in te stellen op SQL_OV_ODBC2.
Vervang alle aanroepen naar SQLAllocEnv, SQLAllocConnect of SQLAllocStmt door aanroepen naar SQLAllocHandle door het juiste HandleType-argument van SQL_HANDLE_ENV, SQL_HANDLE_DBC of SQL_HANDLE_STMT.
Vervang alle aanroepen naar SQLFreeEnv of SQLFreeConnect door aanroepen naar SQLFreeHandle door het juiste HandleType-argument van SQL_HANDLE_DBC of SQL_HANDLE_STMT.
Vervang alle aanroepen naar SQLSetConnectOption door aanroepen naar SQLSetConnectAttr. Als u een kenmerk instelt waarvan de waarde een tekenreeks is, stelt u het argument StringLength op de juiste manier in. Wijzig het argument Kenmerk van SQL_XXXX in SQL_ATTR_XXXX.
Vervang alle aanroepen naar SQLGetConnectOption door aanroepen naar SQLGetConnectAttr. Als u een tekenreeks of binair kenmerk ophaalt, stelt u BufferLength in op de juiste waarde en geeft u een StringLength-argument door. Wijzig het argument Kenmerk van SQL_XXXX in SQL_ATTR_XXXX.
Vervang alle aanroepen naar SQLSetStmtOption door aanroepen naar SQLSetStmtAttr. Als u een kenmerk instelt waarvan de waarde een tekenreeks is, stelt u het argument StringLength op de juiste manier in. Wijzig het argument Kenmerk van SQL_XXXX in SQL_ATTR_XXXX.
Vervang alle aanroepen naar SQLGetStmtOption door aanroepen naar SQLGetStmtAttr. Als u een tekenreeks of binair kenmerk ophaalt, stelt u BufferLength in op de juiste waarde en geeft u een StringLength-argument door. Wijzig het argument Kenmerk van SQL_XXXX in SQL_ATTR_XXXX.
Vervang alle aanroepen naar SQLTransact door aanroepen naar SQLEndTran. Als de meest rechtse geldige handle in de SQLTransact-aanroep een omgevingshandle is, moet een HandleType-argument van SQL_HANDLE_ENV worden gebruikt in de SQLEndTran-aanroep met het juiste Handle-argument. Als de meest rechtse geldige greep in uw SQLTransact-aanroep een verbindingsgreep is, moet een HandleType argument van SQL_HANDLE_DBC worden gebruikt in de SQLEndTran-aanroep met het juiste Handle-argument.
Vervang alle aanroepen naar SQLColAttributes door aanroepen naar SQLColAttribute. Als het argument FieldIdentifier SQL_COLUMN_PRECISION, SQL_COLUMN_SCALE of SQL_COLUMN_LENGTH is, wijzigt u niets anders dan de naam van de functie. Zo niet, wijzig FieldIdentifier van SQL_COLUMN_XXXX in SQL_DESC_XXXX. Als FieldIdentifier is SQL_DESC_CONCISE_TYPE en het gegevenstype een datum/tijd-gegevenstype is, wijzigt u het bijbehorende ODBC 3.x-gegevenstype .
Als u blokcursors, schuifbare cursors of beide gebruikt, doet de toepassing het volgende:
Hiermee stelt u de rijsetgrootte, het cursortype en de gelijktijdigheid van de cursor in met behulp van SQLSetStmtAttr.
Roept SQLSetStmtAttr aan om SQL_ATTR_ROW_STATUS_PTR in te stellen om te verwijzen naar een matrix met statusrecords.
Roept SQLSetStmtAttr aan om SQL_ATTR_ROWS_FETCHED_PTR in te stellen om naar een SQLINTEGER te verwijzen.
Voert de vereiste bindingen uit en voert de SQL-instructie uit.
Roept SQLFetchScroll aan in een lus om rijen op te halen en te navigeren in de resultatenset.
Als het wil ophalen op bladwijzer, roept de toepassing SQLSetStmtAttr aan om SQL_ATTR_FETCH_BOOKMARK_PTR in te stellen op een variabele die de bladwijzer voor de rij zal bevatten die het wil ophalen, en roept het SQLFetchScroll aan met een FetchOrientation-argument van SQL_FETCH_BOOKMARK.
Als u matrices van parameters gebruikt, doet de toepassing het volgende:
Roept SQLSetStmtAttr aan om het kenmerk SQL_ATTR_PARAMSET_SIZE in te stellen op de grootte van de parametermatrix.
Roept SQLSetStmtAttr aan om SQL_ATTR_ROWS_PROCESSED_PTR in te stellen om te verwijzen naar een interne UDWORD-variabele.
Voert naar wens bewerkingen voor voorbereiden, binden en uitvoeren uit.
Als de uitvoering om een of andere reden stopt (zoals SQL_NEED_DATA), kan deze de 'huidige' rij met parameters vinden door de locatie te inspecteren die door SQL_ATTR_ROWS_PROCESSED_PTR wordt verwezen.
Deze sectie bevat de volgende onderwerpen.