2009-02-18 18 views
0

Comment utiliser un binaire pour écrire le format natif MS SQL correct pour le type de données Money? Je souhaite prendre une valeur dans .net, lire à partir d'un fichier sous forme de chaîne de représentation d'une quantité décimale (en fait un type de données "Money" exporté à partir de SQL, mais ce n'est pas important).Comment utiliser un binaire pour écrire le format natif MS SQL correct pour le type de données Money?

Comment puis-je utiliser un graveur binaire pour écrire la valeur afin que vous puissiez utiliser BCP ou BULK INSERT en mode de format natif pour lire la valeur avec succès?

Répondre

0

(où w est un écrivain binaire précédemment instanciée)

    Dim dec = CDec(aString) 
        Dim lng = CLng(dec * 10000) 
        Dim bytes = BitConverter.GetBytes(lng) 
        w.Write(bytes(4)) 
        w.Write(bytes(5)) 
        w.Write(bytes(6)) 
        w.Write(bytes(7)) 
        w.Write(bytes(0)) 
        w.Write(bytes(1)) 
        w.Write(bytes(2)) 
        w.Write(bytes(3)) 

Il peut y avoir plus propres ou de meilleures façons, mais cela semble être ok

comme un heads-up, ce format est seulement pour non Colonnes de l'argent NULL, je pense que vous devez écrire un octet de longueur d'abord ou quelque chose à cet effet pour les colonnes d'argent NULL

0

Je ne me souviens pas comment faire des valeurs nulles sur les types numériques dans les fichiers délimités avec BCP mais je crois que si vous utiliser un fichier de longueur-préfixé, une valeur de longueur de -1 indique une valeur nulle.