Как сохранить таблицу (DataTable) в одну ячейку в базе данных?

2

Можно ли сохранить DataTable в базу данных SQL в одной ячейке двоичного типа типа, а затем снова прочитать его в DataTable?

  • 0
    @Ahmad - В вашем комментарии к codemonkey4hire, что подразумевается под некоторыми ответами, может потребоваться таблица? Вы имеете в виду, что между некоторыми ответами и их вопросами существует многозначная связь? Можете ли вы опубликовать некоторые подробности о вашей структуре базы данных, поскольку мы можем помочь вам в этом. Вообще говоря, я был бы склонен избегать хранения данных в базе данных в незапрашиваемом формате, если в этом нет необходимости, например, состояние сеанса ASP.NET, документы, загруженные пользователем и т. Д.
  • 0
    Таблица: (QuestionTables) Столбцы: (ID, QuestionID, DataOfTable) Мне не нужно запрашивать эти сохраненные таблицы, я буду отображать их все как целый блок или удалять их. Даже не нужно модифицировать.
Теги:
datatable

3 ответа

8
Лучший ответ

Я бы создал, если возможно, поле 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;
            }
     }
    }
  • 1
    +1 точно - XML сериализует DataTable в поле XML и читает его оттуда, когда это необходимо
  • 0
    Таким образом я сохраняю это в поле XML в SQL? Можете ли вы показать мне, как написать код, который делает это, потому что я никогда не имел дело с этим типом данных?
Показать ещё 4 комментария
2

зачем вы хотите?

Если это операция, которую вы собираетесь делать более одного раза, просто сохраните ее в новой таблице sql и прочитайте из нее в свой DataTable позже.

  • 0
    Я создаю систему вопросов и ответов, и для некоторых ответов может потребоваться таблица.
0

Он просто нарушает правила нормализации - значение в ячейке не является атомарным.

Я все время нарушаю это правило, но все же важно понимать альтернативные подходы.

У вас может быть связанная таблица для хранения ответов вместо сохранения всех их значений ответа в одной ячейке.

Что касается вашего комментария ниже, вы все равно можете сделать это со связанной таблицей. Просто используйте таблицу с тремя столбцами: tableID, fieldID, value. Каждый идентификатор таблицы может иметь свой собственный набор идентификаторов fieldID. Компромисс со значением типа данных - он должен быть строкой, а это означает, что вы не получаете преимущества ввода даты или числового типа данных на вашем заднем конце.

  • 1
    да, но у меня будет много таблиц с разными структурами каждый раз

Ещё вопросы

Сообщество Overcoder
Наверх
Меню