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

问题描述:

我有一个对象,我想要存储到数据库表上。表条目由该对象的所有属性组成。其中一个属性是双打数组。此数组可能会根据大约4,000到100,000个值而不同。我以前试图创建两个表,一个用于大多数属性,另一个包含这些double值。然后在两者之间建立关系。我意识到,当我将对象转移到表格时,需要相当长的时间才能将点转移到第二个表格上。这就像每个对象数以千计的查询。所以,我的第二个计划是采用这个双精度数组,并将它们全部放在表中的varbinary(max)条目中。如何将双精度数组存储到varbinary数据类型中,并将其存储到数据库中?

我已经得到了回应,这是可能的,但我不明白该怎么做。

+0

最简单的方法是将你的double数组转换为一个字节数组,然后将字节数组存储到varbinary字段中。看到这个答案的方式来将双数组转换为字节数组.. .. http://*.com/a/6953111/1181408。如果你需要关于sql上下文的帮助,请看这个答案。 http://*.com/a/4057802/1181408 – cgotberg

根据您已将双打写入流(本例中名为_pictureContent)的假设,您可以使用AddWithValue将其写入为sqlCommand参数。

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

读回以:

我存储在“缓冲区大小”为表一个单独的列,所以当我看到它,我知道我是否采用它还是没有什么。如果我这样做,我使用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被列的传入收集(即,第五列)中的偏移量,第一个0是从输入流中读取的起始位置,_picture内容是目标字节数组第二个0是要写入字节数组的偏移量,(buffersize)是要读取的字节数。