Преобразовать Varbinary обратно в файл .txt
Вопрос
У меня есть база данных (SQL 2008), где я хранят файлы. Они сохраняются как тип Varbinary (MAX).
Теперь мне нужно снова получить файл .txt, чтобы я мог пройти через содержимое файла, как я раньше делал с StreamReader.
while ((line = file.ReadLine()) != null)
{
string code = line.Substring(line.Length - 12);
}
Но как я могу преобразовать варбинальный байт [] обратно в обычный файл .txt, чтобы я мог пройти строку содержимого по строке.
Я нашел некоторые идеи с MemoryStream или FileStream, но не могу заставить их работать.
Заранее спасибо!
Решение
MemoryStream m = new MemoryStream(byteArrayFromDB);
StreamReader file = new StreamReader(m);
while ((line = file.ReadLine()) != null)
{
string code = line.Substring(line.Length - 12);
}
Другие советы
попробуй это:
System.IO.File.WriteAllBytes("path to save your file", bytes);
CV - это поле Varbinary (max)
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);
}
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);
}
Не связан с StackOverflow