Можно ли сохранить DataTable в базу данных SQL в одной ячейке двоичного типа типа, а затем снова прочитать его в DataTable?
Я бы создал, если возможно, поле xml внутри базы данных sql и сохранил datatable как xml
Поддержка XML в Microsoft SQL Server 2005
и
Примеры С# и Vb.net для подсказок типа данных XML в SQL Server 2005
должен помочь вам
еще один пример взял из здесь
protected bool LoadXml(SqlConnection cn, XmlDocument doc)
{
//Reading the xml from the database
string sql = @"SELECT Id, XmlField FROM TABLE_WITH_XML_FIELD WHERE Id = @Id";
SqlCommand cm = new SqlCommand(sql, cn);
cm.Parameters.Add(new SqlParameter("@Id",1));
using (SqlDataReader dr = cm.ExecuteReader())
{
if (dr.Read())
{
SqlXml MyXml= dr.GetSqlXml(dr.GetOrdinal("XmlField"));
doc.LoadXml( MyXml.Value);
return true;
}
else
{
return false;
}
}
}
зачем вы хотите?
Если это операция, которую вы собираетесь делать более одного раза, просто сохраните ее в новой таблице sql и прочитайте из нее в свой DataTable позже.
Он просто нарушает правила нормализации - значение в ячейке не является атомарным.
Я все время нарушаю это правило, но все же важно понимать альтернативные подходы.
У вас может быть связанная таблица для хранения ответов вместо сохранения всех их значений ответа в одной ячейке.
Что касается вашего комментария ниже, вы все равно можете сделать это со связанной таблицей. Просто используйте таблицу с тремя столбцами: tableID, fieldID, value. Каждый идентификатор таблицы может иметь свой собственный набор идентификаторов fieldID. Компромисс со значением типа данных - он должен быть строкой, а это означает, что вы не получаете преимущества ввода даты или числового типа данных на вашем заднем конце.