2011-10-18 3 views
4

У меня есть база данных (SQL 2008), где я храню файл. Они сохраняются как тип varbinary (max).Преобразование varbinary обратно в .txt файл

Теперь мне нужно снова получить файл .txt, чтобы я мог прокручивать содержимое файла, как обычно, с StreamReader.

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

Но как я могу преобразовать VARBINARY байт [] обратно в обычный файл .txt, так что я в состоянии пройти через линию содержимого по линии.

Я нашел некоторые идеи с memystream или filestream, но не могу заставить их работать.

Заранее благодарен!

+0

Смотрите ответы на этот вопрос, чтобы узнать, как преобразовать его обратно в строку: 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

резюме является VARBINARY (макс) поле

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); 
    } 
Смежные вопросы