2009-05-21 2 views
2

Предположим, у меня есть ADO.NET DataTable, что я должен был «сохраняться», сохранив его в новый таблицы в базе данных SQL Server - есть быстрый способ сделать это?Как сохранить произвольный объект DataTable на новый SQL таблицы

Я понимаю, что могу написать код, генерирующий DDL для оператора CREATE TABLE, путем циклического преобразования коллекции DataColumns и разработки правильных сопоставлений типов и т. Д. ... но мне интересно, существует ли существующий метод сделать это, или какой-то каркас кто-то написал?

(NB: Мне нужно иметь возможность обрабатывать произвольные столбцы, ничего необычного, как blobs, просто общие типы столбцов, такие как строки, числа, указатели и даты. Программа не будет знать, каковы столбцы в DataTable до тех пор, пока чтобы их нельзя было жестко закодировать.)

ответ

3

ADO.net не может создавать таблицы на SQL Server напрямую, однако SMO может сделать это с помощью метода .Create класса Table. К сожалению, нет встроенного способа использования DataTable для определения объекта SMO Table.

К счастью, Ник Томпсон написал такую ​​процедуру DataTable-to-SMO.Table еще в 2006 году. Он размещен как один из ответов на этот вопрос в форуме MSDN http://social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/4929a0a8-0137-45f6-86e8-d11e220048c3/ (изменить: теперь я могу создавать гиперссылки).

Обратите внимание, что сообщение ответа показывает, как добавить к нему SQLBulkCopy.

+0

, ссылка на процедуру на форуме msdn кажется сломанной. – Muflix

1

Если таблица существует, вы можете использовать SqlBulkCopy (который примет DataTable), чтобы получить данные в таблицу самым быстрым способом (намного быстрее, чем через адаптер). Я не думаю, что это создаст таблицу. Возможно, вам придется написать DDL самостоятельно или найти какой-то существующий код, чтобы перебрать его по DataTable.Columns.

+0

Таблица не существует. Я спрашиваю, потому что я полагаю, что кто-то должен был написать что-то подобное раньше, чтобы создать DDL – codeulike

0

Я мог бы быть проще хранить DataTable как XML. просто создайте таблицу с столбцом XML.

Смежные вопросы