unixODBC-Versionen vor der Version 2.2.14 haben einige Aspekte der von Microsoft festgelegten 64-Bit-ODBC-Spezifikation falsch implementiert. Dadurch kommt es zu Problemen bei der Verwendung des unixODBC-Treibermanagers mit dem SQL Anywhere 64-Bit ODBC-Treiber.
Um diese Probleme zu vermeiden, sollten Sie sich der Unterschiede bewusst sein. Einer davon ist die Definition von SQLLEN und SQLULEN. Dies sind 64-Bit-Typen in der Microsoft 64-Bit ODBC-Spezifikation und werden vom SQL Anywhere 64-Bit ODBC-Treiber als 64-Bit-Quantitäten erwartet. Manche Implementierungen von unixODBC definieren diese zwei Typen als 32-Bit-Quantitäten und dies führt zu Problemen, wenn eine Schnittstelle zum SQL Anywhere 64-Bit ODBC-Treiber hergestellt wird.
Es gibt drei Dinge, die Sie tun müssen, um Probleme auf 64-Bit-Plattformen zu vermeiden.
Statt die unixODBC-Header-Dateien wie sql.h und sqlext.h aufzunehmen, sollten Sie die SQL Anywhere ODBC-Header-Datei unixodbc.h verwenden. Dies gewährleistet, dass Sie die korrekten Definitionen von SQLLEN und SQLULEN erhalten. Die Header-Dateien in unixODBC 2.2.14 oder späteren Versionen beheben das Problem.
Sie müssen sicherstellen, dass Sie die korrekten Typen bei allen Parametern verwenden. Die Verwendung der korrekten Header-Datei und die strenge Typprüfung (Strong Type Checking) Ihres C/C++-Compilers sollte Sie in diesem Bereich unterstützen. Sie müssen auch sicherstellen, dass Sie die korrekten Typen für alle Variablen verwendet haben, die vom SQL Anywhere-Treiber indirekt durch Zeiger gesetzt werden.
Verwenden Sie nicht die Versionen von des unixODBC-Treibermanagers vor Version 2.2.14. Linken Sie stattdessen direkt mit dem SQL Anywhere-ODBC-Treiber. Stellen Sie z.B. sicher, dass das gemeinsam genutzte Objekt libodbc mit dem SQL Anywhere-Treiber verknüpft ist.
libodbc.so.1 -> libdbodbc12_r.so.1 |
Als Alternative können Sie auch den SQL Anywhere-Treibermanager auf Plattformen verwenden, auf denen er verfügbar ist.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |