2011-10-18 7 views
4

ファイルを格納するデータベース(SQL 2008)があります。 これらはvarbinary(max)型として保存されます。varbinaryを.txtファイルに戻す

これで、StreamReaderと同じようにファイルの内容をループできるように、.txtファイルを再度取得する必要があります。

while ((line = file.ReadLine()) != null) 
{ 
string code = line.Substring(line.Length - 12); 
} 

しかし、どのように私は、varbinaryのバイトはので、私はラインでコンテンツラインを通過することができるよ正常に戻っ.txtファイルに[]に変換することができます。

私はmemorystreamまたはfilestreamでいくつかのアイデアを見つけましたが、動作させることはできません。

ありがとうございます!

+0

varbinary型(最大)フィールドです。 http://stackoverflow.com/questions/4959253/converting-sql-server-varbinary-data-into-string-c-sharp –

答えて

3
MemoryStream m = new MemoryStream(byteArrayFromDB); 
StreamReader file = new StreamReader(m); 
while ((line = file.ReadLine()) != null) 
{ 
string code = line.Substring(line.Length - 12); 
} 
+0

これは、私が思ったよりも簡単だったし、やり方を変えなければならなかった私のために複雑になる 私は、行の最後に空白が挿入され、各行の間に別の空白が挿入されていることに気付きましたが。 これは簡単に修正できます。 ありがとう! – Robin

2

この試してみてください。

System.IO.File.WriteAllBytes("path to save your file", bytes); 
2

CVが戻って文字列に変換する方法を知って、この質問への回答を参照してください

SqlCommand sqlCmd = new SqlCommand("SELECT cv FROM [job].[UserInfo] Where ID = 39 ", conn); 
SqlDataReader reader = sqlCmd.ExecuteReader(); 

if (reader.Read() != null) 
{ 
    byte[] buffer = (byte[])reader["cv"]; 
    File.WriteAllBytes("c:\\cv1.txt", buffer); 
} 
-1
static void Main(string[] args) 
    { 
     GetData(); 
    } 
    public static void GetData() 
    { 
     SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["main"].ConnectionString); 
     conn.Open(); 
     string query = "SELECT FileStream FROM [EventOne] Where ID=2"; 
     SqlCommand cmd = new SqlCommand(query, conn); 

     DataTable dt = new DataTable(); 
     dt.Load(cmd.ExecuteReader()); 
     byte[] buffer = dt.AsEnumerable().Select(c => c.Field<byte[]>("FileStream")).SingleOrDefault(); 
     File.WriteAllBytes("c:\\FileStream.txt", buffer); 
    } 
関連する問題