У меня есть несколько очень больших матриц (иногда двойных, но, возможно, других типов), которые могут иметь различные размеры.Я хотел бы сохранить весь массив как varbinary (max)
Я могу хранить запись очень хорошо (я думаю).Однако, когда я прихожу, чтобы прочитать данные, я не знаю, как создать массив AC # с переменными измерениями.
Таблица SQL выглядит следующим образом:
create table test_varbinary_table(
name varchar(256) null,
vb_data varbinary(max) null
)
Хранимая процедурачтобы записать данные здесь:
CREATE PROCEDURE insertData
@name varchar(256),
@data varbinary(max)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO test_varbinary_table (name, vb_data) VALUES (@name, @data);
END
C # здесь:
double[,] dblArySampleData = new double[2,3] { {7.0, 3.0, 1.3 }, {8.333, 4.1211, 8.999 } };
var result = new byte[6 * sizeof(double)];
Buffer.BlockCopy(dblArySampleData, 0, result, 0, result.Length);
try
{
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand("dbo.insertData", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@name", "foo");
cmd.Parameters.AddWithValue("@data", result);
cmd.ExecuteNonQuery();
}
conn.Close();
}
textBox1.Text = "No Failure!";
} catch (Exception ex)
{
textBox1.Text = "Error: " + ex.Message;
}
Итак, теперь я хочу прочитать чертову вещь, но я не знаю, как читатьЭто.Даже не уверен, как начать.Я мог бы хранить измерения вместе с таблицей, так что это два новых поля, скажем, 'строки' и 'столбцы'.
Но мне нужно иметь возможность создать массив байтов [] длины, которую я не задал 'Не знаю ... Я думаю, я мог бы сначала запросить строки и столбцы, а затем вычислить длину ... это кажется тупым, но выполнимым.Но даже если я получу массив byte [], я хочу восстановить 2-мерную матрицу.
Интуитивно я хочу написать:
double[,] dblArySampleData = new double[rows, cols];
, но, похоже, c # не нравится, когда размеры не могут быть переменными.