SqlDataReader
kullanarak bir veritabanından kayıtları çeken bir .net uygulamasını değiştiriyorum. Ben SQL Server BCP queryout
bir düz dosya ve 0E31 uygulama için BCP queryout
veri varbinary(max)
sütundaki her satırdan .jpg görüntüleri oluşturmak için düz dosyaları tüketir iki parçalı bir işlemle değiştiriyorum . Benim durumumdaBCP sorgulama görüntüleri varbinary (max) içinde saklanan
(byte[])reader[field];
ben kullanmaya çalışıyorum:
System.Encoding.Default.GetBytes(stringFromFlatFile)
ama sonuç dosyası bir Windows üzerinde görülemez
mevcut kod basitçe kullanarak bir bayt dizisi sütunu dökme makine (Hatalı hasarlı/bozuk veya çok büyük)Kodlama türlerinden her birini System.Encoding (Ascii, UTFX, vb.) altında şanssız olarak denedim.
BCP queryout
'da ek bir adım var varbinary(max)
sütununda bayt dizisini korumak için almam gerekiyor mu? SqlDataReader
'un .net uygulamasına eklemem gereken bayt dizisini döndürmek için özel bir özelliği var mı?
Binary jpg dosyasını dosyaya koyan koda bakın. Bu size bir ipucu verebilir. BCP sorgulaması, baytların bir dize temsili oluşturuyor mu. Yani, sayısal değer 65 96 71 bayt yerine bir "0x659671" dizesi olurdu. Ayrıca o alandan mevcut kod okumaya sahipseniz ona bakın. –
Verilerin masaya nasıl koyulduğuna erişemiyorum, ancak doğru yolda olduğunuzu kabul ediyorum. Görüntüyü varbin alanından bir bytrayray içine çekmek için bir veri okuyucu kullanan bir test yöntemi oluşturdum. Daha sonra bir Sistem için bayt dizisinin bir bellek akışını kullandım. Daha sonra jpg olarak kaydetmek için System.Drawing.Image kullandım. Görüntü pencerelerde görüntülenebilir. Daha sonra bayt dizisinden bir dize oluşturmak için kullanılabilir her kodlama yöntemini kullandım. Hiçbiri bcp tarafından oluşturulan dizgeye benzemiyor. – Roger
Bcp, "FFD8FFE000104A46494600010100000100010000FFDB00430 ...." gibi görünen bir dize oluşturur. – Roger