5

我有一个存储文件的数据库(SQL 2008)。这些保存为 varbinary(max) 类型。

现在我需要再次获取 .txt 文件,这样我就可以像以前使用 StreamReader 一样遍历文件的内容。

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

但是如何将 varbinary byte[] 转换回普通的 .txt 文件,以便能够逐行浏览内容。

我发现了一些关于 memorystream 或 filestream 的想法,但无法让它们发挥作用。

提前致谢!

4

4 回答 4

5
MemoryStream m = new MemoryStream(byteArrayFromDB);
StreamReader file = new StreamReader(m);
while ((line = file.ReadLine()) != null)
{
string code = line.Substring(line.Length - 12);
}
于 2011-10-18T07:15:18.850 回答
4

尝试这个:

System.IO.File.WriteAllBytes("path to save your file", bytes);
于 2011-10-18T07:15:17.573 回答
3

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);
}
于 2014-09-17T04:49:04.610 回答
0
    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);
    }
于 2015-12-06T14:53:09.700 回答