我有一个存储在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,但我没有设法解决它。
答案 0 :(得分:0)
好的,我找到了一个解决方案(不太漂亮,但它有效)。 Sql允许使用十六进制表示法定义值,因此我将每个字节转换为十六进制表示
sw.Write("set @FisierNou = 0x");
for (int i = 0; i < Fisier.Length; i++)
sw.Write(Fisier[i].ToString("x2"));