如何用c#从sql中检索二进制数据?

时间:2009-08-27 10:23:42

标签: c#

我检索了我保存在文件流列中的数据作为示例 下面的代码,并将其纳入内存流或字节数组。我该怎么打开它 有默认值吗?

OS应用程序,例如用照片管理器或word文档打开照片 MS Word?通常我使用Process.Start命令但它不起作用 内存流或字节数组,那么如何做呢?

 public DataTable RetriveFile(int Code)
        {
            mydbms d = new mydbms();
            DataTable dt;


           String com2 = "select * from Matn_Naame where Code=" + Code + ";";
           dt = d.executeselectsql(com2);


            return dt;
        }
{
Letter_Manager L_M = new Letter_Manager();
            Byte[] b;
            DataTable dt = new DataTable();
            dt = L_M.RetriveFile(6);

            b=(Byte[])dt.Rows[0]["fileContent"];
            path = dt.Rows[0]["Path"].ToString();

                 MemoryStream Memory = new MemoryStream(b);
                 Memory.Write(b, 0, b.Length);
//??????????????????**?for open and show file**
}

2 个答案:

答案 0 :(得分:4)

您需要将数据保存到临时文件中。通过调用System.IO.Path.GetTempFileName()可以获得临时文件名。然后,您只需使用FileStream保存到该路径,如您所述,Process.Start即可启动默认应用程序。

答案 1 :(得分:1)

最简单的方法是使用方便的File.WriteAllBytes方法,该方法将字节数组直接写入指定的文件名。

var fileName = Path.ChangeExtension(Path.GetTempFileName(), "txt");
File.WriteAllBytes(fileName, b);
Process.Start(fileName);

请注意,在我的示例中,我假设您正在处理要使用默认文本编辑器打开的纯文本数据。

Windows将不知道启动此文件的应用程序,除非您为其提供有意义的扩展名。您必须先了解数据的格式,以便附加正确的扩展名,或者您需要使用可以猜出它是什么类型数据的库,例如优秀的TrID文件识别工具。< / p>