Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用c#从sql检索二进制数据?_C# - Fatal编程技术网

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

如何使用c#从sql检索二进制数据?,c#,C#,作为示例,我检索了保存在filestream列中的数据 下面的代码,并将其放入内存流或字节数组。我怎样才能打开它 默认情况下 操作系统应用程序,如使用照片管理器打开照片或使用 Word女士?通常我使用Process.Start命令,但它不适用于 memorystream或字节数组,那么如何实现这一点? public DataTable RetriveFile(int Code) { mydbms d = new mydbms();

作为示例,我检索了保存在filestream列中的数据 下面的代码,并将其放入内存流或字节数组。我怎样才能打开它 默认情况下

操作系统应用程序,如使用照片管理器打开照片或使用 Word女士?通常我使用Process.Start命令,但它不适用于 memorystream或字节数组,那么如何实现这一点?

 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**
}

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

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

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

var fileName = Path.ChangeExtension(Path.GetTempFileName(), "txt");
File.WriteAllBytes(fileName, b);
Process.Start(fileName);
请注意,在我的示例中,我假设您正在处理希望使用默认文本编辑器打开的纯文本数据


除非您为该文件提供有意义的扩展名,否则Windows将不知道启动该文件的应用程序。您或者需要预先知道数据的格式,以便添加正确的扩展名,或者需要使用一个库来猜测数据的类型,例如优秀的文件识别工具。

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

var fileName = Path.ChangeExtension(Path.GetTempFileName(), "txt");
File.WriteAllBytes(fileName, b);
Process.Start(fileName);
请注意,在我的示例中,我假设您正在处理希望使用默认文本编辑器打开的纯文本数据



除非您为该文件提供有意义的扩展名,否则Windows将不知道启动该文件的应用程序。您必须预先知道数据的格式,以便可以附加正确的扩展名,或者需要使用一个库来猜测数据的类型,例如优秀的文件识别工具。

请帮助我创建blow代码:FileStream fs=new FileStream(path,FileMode.OpenOrCreate,FileAccess.Write); Path.GetTempFileName();fs.Write(b,0,b.长度);fs.Flush();fs.Close();我现在不satrt fs if Process.Start(fs.Name)?但它启动应用程序时使用的路径与退出SQLB时的路径相同,但启动文件时使用的路径与退出SQLB时的读取字节时的路径相同。这是一个非常有用的答案。我甚至不知道这种方法的存在。谢谢@玛丽:你应该分配
path=path.GetTempFileName()
然后使用
Process.Start(path)
@Mary:如果现在一切正常,您介意接受答案吗?请帮助我创建blow-code:FileStream fs=new FileStream(path,FileMode.openor创建,FileAccess.Write);Path.GetTempFileName();fs.Write(b,0,b.长度);fs.Flush();fs.Close();我现在不satrt fs if Process.Start(fs.Name)?但它启动应用程序时使用的路径与退出SQLB时的路径相同,但启动文件时使用的路径与退出SQLB时的读取字节时的路径相同。这是一个非常有用的答案。我甚至不知道这种方法的存在。谢谢@玛丽:你应该分配
path=path.GetTempFileName()
然后使用
过程。开始(路径)
@Mary:如果你现在一切正常,您介意接受答案吗?thanx表示答案,但当运行此代码时,会生成一个带有tmp扩展名的临时文件,并发生错误:没有应用程序与此操作的指定文件关联。请帮助我thanx查看有关文件扩展名的对我答案的修改。我的扩展文件是txt或doc或docx,我将是否扩展到临时文件?我已更改代码,使临时文件扩展名为“txt”。您仍然需要一些方法来确定您正在处理的是纯文本还是MS Word文档。非常感谢您的帮助Thanxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:-)thanx用于回答,但运行此代码时,会创建一个带有tmp扩展名的临时文件,并发生错误:没有应用程序与此操作的指定文件关联请帮助我查看关于文件扩展名的答案的修改。我的扩展名文件是txt或doc或docx,我将扩展名附加到tempfile?我已更改代码,使temp文件扩展名为“txt”。您仍然需要一些方法来确定您是在处理纯文本还是MS Word文档。非常感谢您的帮助Thanxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:-)