Возможно ли сохранить DataTable в базу данных SQL в одной ячейке двоичного типа, например, и прочитать ее снова в DataTable?Как сохранить таблицу (DataTable) в одну ячейку в базе данных?
ответ
Я хотел бы создать, если это возможно, поле XML внутри базы данных SQL и сохранить DataTable как XML
XML Support in Microsoft SQL Server 2005
и
C# and Vb.net example for XML data type tips in SQL Server 2005
поможет вам
другой пример взяли с here
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;
}
}
}
+1 точно - XML сериализует DataTable в поле XML и читает его обратно оттуда, когда это необходимо –
Итак, я сохраняю его в поле XML в SQL? Не могли бы вы показать мне, как написать код, который делает это, потому что я никогда не рассматривал этот тип данных? –
, какую версию сервера SQL Server вы получили? – Fredou
Почему бы вам не захотеть?
Если это операция, которую вы собираетесь делать более одного раза, просто сохраните ее в новой таблице sql и прочитайте из таблицы в свой DataTable позже.
Я создаю систему вопросов и ответов, а для некоторых ответов может потребоваться таблица. –
Он просто нарушает правила нормализации - значение в ячейке не является атомарным.
Я все время нарушаю это правило, но все же важно понимать альтернативные подходы.
У вас может быть связанная таблица для хранения своих ответов вместо сохранения всех их значений ответа в одной ячейке.
Что касается вашего комментария ниже, вы можете сделать это со связанной таблицей. Просто используйте таблицу с тремя столбцами: tableID, fieldID, value. Каждый идентификатор таблицы может иметь свой собственный набор идентификаторов fieldID. Компромисс связан со значением типа данных - он должен быть строкой, что означает, что вы не получаете преимущества применения даты или числового типа данных на вашем заднем конце.
Да, но у меня будет много таблиц с разными структурами каждый раз –
@Ahmad - В вашем комментарии к codemonkey4hire, что подразумевается под некоторыми ответами, может потребоваться таблица? Вы имеете в виду, что между некоторыми ответами и их вопросами существует много отношений. Можете ли вы опубликовать некоторые сведения о своем дизайне базы данных, поскольку мы сможем помочь вам в этом. Вообще говоря, я был бы склонен избегать наличия данных в базе данных в формате без запроса, если это необходимо, например, Состояние сеанса ASP.NET, документы, загруженные пользователем и т. Д. –
Таблица: (QuestionTables) Столбцы: (ID, QuestionID, DataOfTable) Мне не нужно запрашивать эти сохраненные таблицы, я буду показывать их только как целый блок или удалить их. Даже не нужно изменять. –