Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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#windowsForm中的格式相同吗_C#_Sql Server 2005 - Fatal编程技术网

要读取从数据库中检索的文件,其格式与保存在C#windowsForm中的格式相同吗

要读取从数据库中检索的文件,其格式与保存在C#windowsForm中的格式相同吗,c#,sql-server-2005,C#,Sql Server 2005,我正在使用C#Windows窗体应用程序将文档文件(word、pdf和text)插入SQL server数据库,以下代码用于将文件转换为二进制文件,并在ward之后将此文件上载到数据库: FileInfo fileinfo = new FileInfo(file); string fileName = System.IO.Path.GetFileNameWithoutExtension(file); string extension = System.IO.Path.Ge

我正在使用C#Windows窗体应用程序将文档文件(word、pdf和text)插入SQL server数据库,以下代码用于将文件转换为二进制文件,并在ward之后将此文件上载到数据库:

    FileInfo fileinfo = new FileInfo(file);
    string fileName = System.IO.Path.GetFileNameWithoutExtension(file);
    string extension = System.IO.Path.GetExtension(file);
    long byteSize = fileinfo.Length;
    FileStream myFileStreams = new FileStream(file, FileMode.Open, FileAccess.Read);
    BinaryReader br = new BinaryReader(myFileStreams);
    byte[] fileStream = br.ReadBytes((int)byteSize);
该文件已成功保存,但当我从数据库检索时,该文件不是可读的格式,以下代码是我用于从数据库检索并保存在本地磁盘上的代码:

    //the file is fetch by its id and is saved in DataTable dt1 on its row[0][1]
    byte[] cv = (byte[])dt1.Rows[0][1];
    string cvName = dt1.Rows[0][0].ToString();
    string ext = dt1.Rows[0][2].ToString();

    //saved in bin
    string pathOfCv = "new\\" + cvName + ext;
    File.WriteAllBytes(pathOfCv, cv);
    File.Create(pathOfCv);
检索到的文件包含无法读取的文本,我希望以保存的格式读取这些文本,我认为文件转换中存在问题,可能是我无法直接在文件中写入字节数组


请给我一些代码示例如何解决此问题,谢谢。

也许您应该尝试使用MemoryStream smth类似:

MemoryStream ms = new MemoryStream(cv);
FileStream file = new FileStream(cvName + ext, FileMode.Create,System.IO.FileAccess.Write);
byte[] bytes = new byte[ms.Length];
ms.Read(bytes, 0, (int)ms.Length);
file.Write(bytes, 0, bytes.Length);
file.Close();
ms.Close();

DB中的列类型是什么?这是二进制数据,应该像一个一样保存。。。MSSQL具有
binary
列类型数据库中的列类型为varbinary(2000)您是否检查了文件大小是否大于2000?您遇到的一个问题是
file.writealBytes(pathOfCv,cv)
在给定路径创建一个新文件,因此下一行
file.Create(pathOfCv)
弊大于利。是的,由于我正在测试,文件现在太小,不超过10Kb