如何将varbinary数据类型的双精度数组存储到数据库中?

时间:2013-07-22 20:40:58

标签: c# .net sql database ado.net

我有一个想要存储到数据库表中的对象。表条目由该对象的所有属性组成。其中一个属性是双精度数组。该数组可以从每个对象变化大约4,000到100,000个值。我之前尝试创建两个表,一个用于大多数属性,另一个用于包含这些双精度值。然后在两者之间建立关系。我意识到,当我将对象传输到表格时,需要花费大量时间才能将点数放到第二个表格上。这就像每个对象的数千个查询。所以,我的第二个计划是将这个双打数组放在表中的varbinary(max)条目中。

我得到的答复是可行的,但我不明白该怎么做。

1 个答案:

答案 0 :(得分:1)

假设您已将双打写入流(在本例中名为_pictureContent),则使用AddWithValue将其写出为sqlCommand参数。

  

command.Parameters.AddWithValue(“@ PictureContent”,_ pictureContent);

请阅读:

我将'buffersize'存储为表中的单独列,所以当我读它时,我知道我是否有任何内容。如果我这样做,我使用GetBytes来读取varbinary列。

  

long bufferSize = dataReader.IsDBNull(FIELD_BUFFERSIZE)? 0:dataReader.GetInt64(FIELD_BUFFERSIZE);
  if(bufferSize> 0)
  {
     j.PictureContent = new byte [bufferSize];
     bufferSize = dataReader.GetBytes(FIELD_PICTURECONTENT,0,_pictureContent,0,Convert.ToInt32(bufferSize));

  }

FIELD_PICTURECONTENT是传入的列集合(即第5列)中的偏移量,第一个0是从传入流中读取的起始位置,_picture content是目标字节数组,第二个0是偏移量在bytearray中写入,而(buffersize)是要读取的字节数。