Hallo,
ich versuche jetzt seit einiger Zeit Daten aus PostgreSQL zu lesen (mit VB.net). An sich geht das gut, aber mit Aktivierung von “Option Strict On” wirds schwierig.
Speziell geht es mir um Daten vom Typ Byte() [vb] bzw. Bytea [postgresql].
Ohne Option Strict geht es so:
Dim ds As New DataSet
Dim da As New NpgsqlDataAdapter(cmd)
da.Fill(ds)
Dim buf As Byte() = Nothing
buf = ds.Tables(0).Rows(0).Item(0)
Falls jemand einen Vorschlag hat, der auch mit Strict funktioniert nehme ich auch diesen gerne an.
Ansonsten sollte ein Datareader helfen - auch(/vor allem) in Hinsicht auf den Speicherverbrauch - tut er aber nicht:
Dim I as Int32=0
While reader.Read
'feststellen wie lang die Daten sind
I = reader.GetBytes(0, 0, Nothing, 0, Int32.MaxValue)
'passenden Puffer erzeugen
Dim buf(I - 1) As Byte
'lesen
reader.GetBytes(0, 0, buf, 0, I)
End While
reader.Close
Primäres Problem scheint zu sein, dass die Daten in der DB unterschiedlich lang sind. Mal 8 Byte, mal 100 Byte, etc. . Bei der Längenfeststellung kommt jedoch immer derselbe Wert (der längste?) heraus.
Gibt es da eine andere Möglichkeit die Länge festzustellen und damit passend den Puffer zum Auslesen zu erstellen und natürlich auch zu lesen?
Oder mache ich hier vielleicht etwas total falsch?
MfG calvin