在现有文本之间将字节数组写入文本文件

时间:2014-01-21 14:25:32

标签: c# sql-server character-encoding

我有一个存储在varbinary字段中的MSSQL DB中的文件(它是一个zip文件)。我正在从DB读取它到字节数组(Fisier)。

我想创建一个文本文件,其中包含可以在客户数据库上运行的sql脚本,并更新客户服务器上的文件。我正在使用simmilar来更新rdlc文件,但这些文件存储为文本,这是二进制文件。你有什么建议,我该怎么做?

 using (FileStream fs = new FileStream(FilePath, FileMode.Create))
   using (StreamWriter sw = new StreamWriter(fs))
   {
   sw.WriteLine("declare @NewFile varbinary(max)");
   sw.WriteLine("set @NewFile =Convert(varbinary(max),'");

   //this for loop is wrong
   for (int i = 0; i < Fisier.Length; i++) sw.Write((char)Fisier[i]);

   sw.WriteLine("', 2)");

   sw.WriteLine("exec dbo.SetFile");
   sw.WriteLine("@File= @NewFile ,");
}

我也试过BinaryWriter,但我没有设法解决它。

1 个答案:

答案 0 :(得分:0)

好的,我找到了一个解决方案(不太漂亮,但它有效)。 Sql允许使用十六进制表示法定义值,因此我将每个字节转换为十六进制表示

sw.Write("set @FisierNou = 0x");
for (int i = 0; i < Fisier.Length; i++) 
  sw.Write(Fisier[i].ToString("x2"));