Загрузка DataTable в SP

У меня SQL Server 2008 и VS 2008 Pro. И я кодирую на C #. Я принимаю текстовый входной файл от клиента и анализирую эти данные в DataTable в моем файле C# aspx.cs. Я знаю, что это работает правильно. Поэтому я заполнил DataTable. Но как теперь загрузить эти данные в SP? Например, могу ли я использовать параметр динамической таблицы? Или я должен вместо этого использовать XML?

Проблема в том, что количество необходимых столбцов может варьироваться в зависимости от того, в какую таблицу они хотят вставить. Детали: я позволяю пользователю выбирать, к какой таблице он хочет добавить данные. Для простоты скажем: TABLE_NAME NUM_COLS A 2 B 3 C 4

А также предположим, что первый столбец в каждом из них является первичным ключом INT. Итак, если они выберут таблицу B, то DataTable будет выглядеть примерно так: PK C1 C2 C3 1 'd' 'e' '3/10/99' 2 'g' 'h' '4/10/99'

Итак, теперь я хочу добавить эти данные выше в таблицу B в моей базе данных AdventureWorks. Как проще всего реализовать это как в определении SP, так и в коде C#, который вызывает этот SP? Благодарю вас!


person salvationishere    schedule 08.07.2009    source источник


Ответы (1)


Кажется, я понимаю, о чем вы спрашиваете. Я собираюсь предположить, что каждая строка вашего импорта данных будет напрямую/чисто сопоставляться с таблицей в базе данных. Я также предполагаю, что логика вашего приложения может определить, где должна храниться каждая строка данных.

Тем не менее, я предлагаю работать с каждой строкой .NET DataTable индивидуально, а не передавать данные в SQL как один параметр хранимой процедуры, а затем полагаться на SQL для любого анализа данных и сопоставления таблиц.

По сути, прокрутите свой DataTable, определите тип данных и выполните соответствующую вставку для каждой строки. Надеюсь, это поможет.

person Ben Griswold    schedule 08.07.2009
comment
Спасибо, Бен. Это имеет смысл для меня. Все ваши предположения верны для моего кода. Знаете ли вы какие-либо хорошие онлайн-примеры этого, на которые я могу посмотреть в качестве модели реализации этого метода? - person salvationishere; 10.07.2009
comment
Я бы предложил проанализировать каждую строку данных, чтобы определить тип. Затем я бы использовал базовый оператор switch или использовал шаблон стратегии для обработки ваших обновлений данных на основе типа строки. По сути, в каждом случае будет выполняться отдельная процедура SQL. Если вам нужна дополнительная информация о шаблоне стратегии, начните со статьи Джереми Миллера: codebetter.com/blogs/jeremy.miller/archive/2006/04/11/. Удачи. - person Ben Griswold; 10.07.2009