Unicode-Treiber
Ob ein Treiber ein Unicode-Treiber oder ein ANSI-Treiber sein soll, hängt vollständig von der Art der Datenquelle ab. Wenn die Datenquelle Unicode-Daten unterstützt, sollte der Treiber ein Unicode-Treiber sein. Wenn die Datenquelle nur ANSI-Daten unterstützt, sollte der Treiber einen ANSI-Treiber erneut Standard.
Ein Unicode-Treiber muss SQL exportieren Verbinden W, damit er vom Treiber-Manager als Unicode-Treiber erkannt wird.
Ein Unicode-Treiber muss Unicode-Funktionen (mit einem Suffix von W) akzeptieren und Unicode-Daten speichern. Sie kann auch ANSI-Funktionen akzeptieren, ist jedoch nicht erforderlich. (Der Treiber-Manager übergibt keinen ANSI-Funktionsaufruf mit dem Ein Suffix für den Treiber, konvertiert es jedoch in einen ANSI-Funktionsaufruf ohne das Suffix und übergibt es dann an den Treiber.)
Je nach Bindung der Anwendung muss ein Unicode-Treiber Resultsets in Unicode oder ANSI zurückgeben können. Wenn eine Anwendung an SQL_C_CHAR gebunden ist, muss der Unicode-Treiber SQL_WCHAR Daten in SQL_CHAR konvertieren. Der Treiber-Manager zuordnen SQL_C_WCHAR SQL_C_CHAR für ANSI-Treiber, jedoch keine Zuordnung für Unicode-Treiber.
Hinweis
Beim Bestimmen des Treibertyps ruft der Treiber-Manager SQLSet Verbinden Attr auf und legt das attribut SQL_ATTR_ANSI_APP zur Verbindungszeit fest. Wenn die Anwendung ANSI-APIs verwendet, wird SQL_ATTR_ANSI_APP auf SQL_AA_TRUE festgelegt, und wenn sie Unicode verwendet, wird sie auf einen Wert von SQL_AA_FALSE festgelegt. Dieses Attribut wird verwendet, damit der Treiber basierend auf dem Anwendungstyp ein anderes Verhalten aufweisen kann. Das Attribut kann von der Anwendung nicht direkt festgelegt werden und wird von SQLGet Verbinden Attr nicht unterstützt. Wenn ein Treiber dasselbe Verhalten für ANSI- und Unicode-Anwendungen aufweist, sollte er SQL_ERROR für dieses Attribut zurückgeben. Wenn der Treiber SQL_SUCCESS zurückgibt, trennt der Treiber-Manager ANSI- und Unicode-Verbindungen, wenn Verbinden ion-Pooling verwendet wird.