Partager via


Conversion à partir de la bibliothèque de bases de données vers une copie en bloc ODBC

La conversion d’un programme de copie en bloc DB-Library en ODBC est facile, car les fonctions de copie en bloc prises en charge par le pilote ODBC SQL Server Native Client sont similaires aux fonctions de copie en bloc DB-Library, à l’exception suivante :

  • DB-Library applications passent un pointeur vers une structure DBPROCESS comme premier paramètre des fonctions de copie en bloc. Dans les applications ODBC, le pointeur DBPROCESS est remplacé par un handle de connexion ODBC.

  • DB-Library applications appellent BCP_SETL avant de se connecter pour activer les opérations de copie en bloc sur un DBPROCESS. Les applications ODBC appellent plutôt SQLSetConnectAttr avant de se connecter pour activer les opérations en bloc sur un handle de connexion :

    SQLSetConnectAttr(hdbc, SQL_COPT_SS_BCP,  
        (void *)SQL_BCP_ON, SQL_IS_INTEGER);  
    
  • Le pilote ODBC SQL Server Native Client ne prend pas en charge DB-Library gestionnaires de messages et d’erreurs ; vous devez appeler SQLGetDiagRec pour obtenir des erreurs et des messages déclenchés par les fonctions de copie en bloc ODBC. Les versions ODBC des fonctions de copie en bloc retournent les codes de retour de copie en bloc standard de SUCCEED ou FAILED, et non les codes de retour de style ODBC, tels que SQL_SUCCESS ou SQL_ERROR.

  • Les valeurs spécifiées pour le paramètre DB-Library bcp_bindvarlen sont interprétées différemment du paramètre ODBC bcp_bindcbData .

    Condition indiquée DB-Library valeur varlen Valeur cbData ODBC
    Valeurs Null fournies 0 -1 (SQL_NULL_DATA)
    Données de variables fournies -1 -10 (SQL_VARLEN_DATA)
    Caractère de longueur zéro ou chaîne binaire NA 0

    Dans DB-Library, une valeur varlen de -1 indique que les données de longueur variable sont fournies, ce qui est interprété dans ODBC cbData pour signifier que seules les valeurs NULL sont fournies. Modifiez les spécifications DB-Library varlen de -1 pour SQL_VARLEN_DATA et toutes les spécifications varlen de 0 à SQL_NULL_DATA.

  • Les DB-Library bcp_colfmt file_collen et odbc bcp_colfmtcbUserData ont le même problème que les paramètres bcp_bindvarlen et cbData notés ci-dessus. Modifiez toutes les spécifications DB-Library file_collen de -1 pour SQL_VARLEN_DATA et toutes les spécifications file_collen de 0 à SQL_NULL_DATA.

  • Le paramètre iValue de la fonction bcp_control ODBC est un pointeur void. Dans DB-Library, iValue était un entier. Cassez les valeurs de l’iValue ODBC en void *.

  • L’option bcp_control BCPMAXERRS spécifie le nombre de lignes individuelles pouvant avoir des erreurs avant qu’une opération de copie en bloc échoue. La valeur par défaut de BCPMAXERRS est 0 (échec de la première erreur) dans la version DB-Library de bcp_control et 10 dans la version ODBC. DB-Library applications qui dépendent de la valeur par défaut de 0 pour arrêter une opération de copie en bloc doit être modifiée pour appeler le bcp_control ODBC pour définir BCPMAXERRS sur 0.

  • La fonction bcp_control ODBC prend en charge les options suivantes non prises en charge par la version DB-Library de bcp_control :

    • BCPODBC

      Lorsque la valeur est TRUE, spécifie que les valeurs datetime et smalldatetime enregistrées au format caractère auront le préfixe et le suffixe de séquence d’échappement ODBC. Cela s’applique uniquement aux opérations de BCP_OUT.

      Avec BCPODBC défini sur FALSE, une valeur datetime convertie en chaîne de caractères est générée comme suit :

      1997-01-01 00:00:00.000  
      

      Avec BCPODBC défini sur TRUE, la même valeur datetime est sortie que :

      {ts '1997-01-01 00:00:00.000' }  
      
    • BCPKEEPIDENTITY

      Lorsqu’elle est définie sur TRUE, spécifie que les fonctions de copie en bloc insèrent des valeurs de données fournies pour les colonnes avec des contraintes d’identité. S’il n’est pas défini, de nouvelles valeurs d’identité sont générées pour les lignes insérées.

    • BCPHINTS

      Spécifie différentes optimisations de copie en bloc. Cette option ne peut pas être utilisée sur la version 6.5 ou antérieure de SQL Server.

    • BCPFILECP

      Spécifie la page de codes du fichier de copie en bloc.

    • BCPUNICODEFILE

      Spécifie qu’un fichier de copie en bloc en mode caractère est un fichier Unicode.

  • La fonction odbc bcp_colfmt ne prend pas en charge l’indicateur file_type de SQLCHAR, car il est en conflit avec le typedef ODBC SQLCHAR. Utilisez PLUTÔT SQLCHARACTER pour bcp_colfmt.

  • Dans les versions ODBC des fonctions de copie en bloc, le format d’utilisation des valeurs datetime et smalldatetime dans les chaînes de caractères est le format ODBC de aaaa-mm-dd hh :mm :ss.sss ; les valeurs smalldatetime utilisent le format ODBC de aaaa-mm-dd hh :mm :ss.

    Les versions DB-Library des fonctions de copie en bloc acceptent les valeurs datetime et smalldatetime dans les chaînes de caractères à l’aide de plusieurs formats :

    • Le format par défaut est mmm dd aaaa hh :mmxxxx est AM ou PM.

    • chaînes de caractères datetime et smalldatetime dans n’importe quel format pris en charge par la fonction DB-Library dbconvert.

    • Lorsque la case Utiliser les paramètres internationaux est cochée sous l’onglet Options DB-Library de l’utilitaire de réseau client SQL Server, les fonctions de copie en bloc DB-Library acceptent également des dates au format de date régional défini pour le paramètre régional du registre d’ordinateurs clients.

    Les fonctions de copie en bloc DB-Library n’acceptent pas les formats odbc datetime et smalldatetime .

    Si l’attribut d’instruction SQL_SOPT_SS_REGIONALIZE est défini sur SQL_RE_ON, les fonctions de copie en bloc ODBC acceptent les dates au format de date régional défini pour le paramètre de paramètres régionaux du registre d’ordinateurs clients.

  • Lors de la sortie des valeurs monétaires au format caractère, les fonctions de copie en bloc ODBC fournissent quatre chiffres de précision et aucun séparateur de virgule ; DB-Library versions fournissent uniquement deux chiffres de précision et incluent les séparateurs de virgules.

Voir aussi

Exécution d’opérations de copie en bloc (ODBC)
Fonctions de copie en bloc