Come si usa un BinaryWriter di scrivere il formato nativo di MS SQL corretto per il tipo di dati di Money?

StackOverflow https://stackoverflow.com/questions/562042

Domanda

Come si usa un BinaryWriter di scrivere il formato nativo di MS SQL corretto per il tipo di dati Money?

Mi piacerebbe prendere un valore in .net, leggere da un file come rappresentazione di stringa di un valore decimale (in realtà un "Money" tipo di dati esportati da SQL, ma che non è importante).

Come posso utilizzare uno scrittore binario di scrivere il valore in modo che è possibile utilizzare BCP o BULK INSERT in modalità formato nativo per leggere il valore di successo?

È stato utile?

Soluzione

(dove w è uno scrittore di binario in precedenza un'istanza)

                    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))

Ci possono essere modi più puliti o migliori, ma questo sembra essere ok

come un testa a testa, questo formato è solo per non nulla colonne di denaro, io penso che si debba scrivere un byte di lunghezza prima o qualcosa in tal senso per le colonne nullable denaro

Altri suggerimenti

Non mi ricordo come fare valori nulli sui tipi numerici in file delimitati con BCP, ma credo che se si utilizza un file lunghezza prefissato, un valore di lunghezza di -1 indica un valore nullo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top