相同的二进制字段在字节[]中是不同的

时间:2013-05-22 15:49:50

标签: c# sql reflection

我无法在VARBINARY(MAX)表中存储SQL数据。

SELECT BulkColumn
FROM    OPENROWSET(BULK 'C:\Example.exe', SINGLE_BLOB) MyFile

我通过执行上述操作来填充表格 - 因为Binary字符串太长,我们无法直接插入字符串,因此我们使用chunking方法,初始插入并跟进一系列更新声明。

使用第一种方法用二进制数据填充行,然后执行脚本以使用二进制数据填充另一行。

如果我复制并粘贴二进制字段的内容并比较两者 - 它们是相同的。

但是,如果我使用以下代码,则不是:

byte[] arr1 = null;
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["SippPremium"].ConnectionString))
{
  using (SqlCommand cmd = new SqlCommand("SELECT BinaryData FROM dbo.vertDLL WHERE DLL_PK = 1", con))
  {
    DataTable dt = new DataTable();
    SqlDataAdapter sda = new SqlDataAdapter(cmd);
    sda.Fill(dt);
    arr1 = (byte[])dt.Rows[0]["BinaryData"];
  }
}
//Same code to get arr2
for (int i = 0; i < arr1.Length; i++)
{
  if (i > arr2.Length)
  {
    Console.WriteLine("Array finishes at {0}", arr2[i - 1]);
  }
  else if(arr1[i] !=  arr2[i])
  {
    Console.WriteLine("Byte {0} is different", i);
    Console.ReadLine();
    break;
  }
}

由于某种原因,arr1的长度为2423168arr21211584 - 完全是一半。我用113个其他汇编文件完成了这个,这是唯一一个无法正常工作的文件。

我正在绕弯道试图弄清楚什么是错的,有什么想法吗?

0 个答案:

没有答案