Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Внесение масива данных в таблицу  [new]
temoxa
Member

Откуда:
Сообщений: 405
Доброго дня! Подскажите как через C# можно внести массив данных в таблицу MS SQL! Есть просто цикл, который формирует массив данных! А вот как этот массив загнать в таблицу не знаю! Буду благодарен за любую помощь!
11 июн 12, 13:28    [12699044]     Ответить | Цитировать Сообщить модератору
 Re: Внесение масива данных в таблицу  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
temoxa
Доброго дня! Подскажите как через C# можно внести массив данных в таблицу MS SQL! Есть просто цикл, который формирует массив данных! А вот как этот массив загнать в таблицу не знаю! Буду благодарен за любую помощь!

Вставка данных осуществляется командой INSERT.
Побольше восклицательных знаков, они скилс повышают.
11 июн 12, 14:02    [12699136]     Ответить | Цитировать Сообщить модератору
 Re: Внесение масива данных в таблицу  [new]
temoxa
Member

Откуда:
Сообщений: 405
Я это знаю. Вопрос как через Insert вставить масив?
11 июн 12, 14:05    [12699146]     Ответить | Цитировать Сообщить модератору
 Re: Внесение масива данных в таблицу  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
temoxa
Я это знаю. Вопрос как через Insert вставить масив?

1. В цикле вставить значения из коллекции в таблицу.
2. Коллекцию сериализовать в хмл на клиенте и из хмл вставить в таблицу на сервере .
11 июн 12, 14:24    [12699213]     Ответить | Цитировать Сообщить модератору
 Re: Внесение масива данных в таблицу  [new]
aleonov
Member

Откуда:
Сообщений: 96
temoxa,

Выведи данные из массива в табличное представление с помощью метода - 'FillRowMethodName', а потом вставь в таблицу. Например вот так
   // Diff 
    [SqlFunction(FillRowMethodName = "YoursFillRow",
                 TableDefinition = "id1 int,  id2 int")]
    public static IEnumerator CLR_YourFunc(your_parameter)
    {

        return new YourClass(your_parameter);
    }

    // Fill in output record set for CLR_YourFunc
    private static void DiffFillRow(object row, out SqlInt32 id1, out SqlInt32 id2)
    {

        YourClass s = (YourClass)row;
        id1 = s.id1;
        id2 = s.id2;

    }

public class YourClass : IEnumerator
{
    public int id1;
    public int id2;
..............
11 июн 12, 14:34    [12699248]     Ответить | Цитировать Сообщить модератору
 Re: Внесение масива данных в таблицу  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
aleonov,

нахрена это хрень, тем более неофиту
11 июн 12, 14:48    [12699329]     Ответить | Цитировать Сообщить модератору
 Re: Внесение масива данных в таблицу  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Во-первых, есть специальные средства вставки больших массивов - BULK INSERT, например.
Стало быть, формируете текстовый файл и выполняете соответствующую команду.

Во-вторых, если массив данных не слишком большой, можно на клиенте сформировать текст SQL
типа
INSERT <TableName> (<СписокПолей>) SELECT <СписокЗначений> UNION ALL SELECT <СписокЗначений> ...
11 июн 12, 14:49    [12699332]     Ответить | Цитировать Сообщить модератору
 Re: Внесение масива данных в таблицу  [new]
aleonov
Member

Откуда:
Сообщений: 96
Ken@t
aleonov,

нахрена это хрень, тем более неофиту



чем моя хрень хуже вот этой хрени

Ken@t
1. В цикле вставить значения из коллекции в таблицу.
2. Коллекцию сериализовать в хмл на клиенте и из хмл вставить в таблицу на сервере .
11 июн 12, 18:31    [12699976]     Ответить | Цитировать Сообщить модератору
 Re: Внесение масива данных в таблицу  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6202
Если сервер 2008-й и выше, то можно использовать параметры табличного типа.
11 июн 12, 18:38    [12699995]     Ответить | Цитировать Сообщить модератору
 Re: Внесение масива данных в таблицу  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
aleonov
temoxa,
Выведи данные из массива в табличное представление с помощью метода - 'FillRowMethodName', а потом вставь в таблицу.

Только непонятно, как объект передать из клиентского C#-приложения в вашу CLR table-valued function.
11 июн 12, 18:45    [12700020]     Ответить | Цитировать Сообщить модератору
 Re: Внесение масива данных в таблицу  [new]
aleonov
Member

Откуда:
Сообщений: 96
Jovanny
aleonov
temoxa,
Выведи данные из массива в табличное представление с помощью метода - 'FillRowMethodName', а потом вставь в таблицу.

Только непонятно, как объект передать из клиентского C#-приложения в вашу CLR table-valued function.



из написанного ТС вообще не понятно где выполняется код, я предположил что на сервере.
11 июн 12, 19:08    [12700074]     Ответить | Цитировать Сообщить модератору
 Re: Внесение масива данных в таблицу  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
aleonov,

Мы уже знаем , что Вы обладаете знаними использования CLR , но "сувать" это в каждую щель - не показатель грамотного разработчика.

Очивидно же, что вопрос автора "как из клиентского приложения массово вставить данные в таблицу"
Моя хрень
по п.1 оперерует сдандартными ANSI SQL командами, нативна по сути, "готовится" из любого примера msdn, работает с любым сервером.

по п.2 заставляет ТС почитать о сериализации коллекций, работой с xml как со стороны сервера , так и стандартного механизма среды CLR.

Можно было бы предложить и использование табличных типов, но автор не указал сервер.
11 июн 12, 21:51    [12700469]     Ответить | Цитировать Сообщить модератору
 Re: Внесение масива данных в таблицу  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6202
Ken@t
но автор не указал сервер.

Обычно в таких случаях отталкиваются от последней существующей версии, не?
12 июн 12, 09:30    [12701239]     Ответить | Цитировать Сообщить модератору
 Re: Внесение масива данных в таблицу  [new]
aleonov
Member

Откуда:
Сообщений: 96
Ken@t
aleonov,

Мы уже знаем , что Вы обладаете знаними использования CLR , но "сувать" это в каждую щель - не показатель грамотного разработчика.

Очивидно же, что вопрос автора "как из клиентского приложения массово вставить данные в таблицу"
Моя хрень
по п.1 оперерует сдандартными ANSI SQL командами, нативна по сути, "готовится" из любого примера msdn, работает с любым сервером.

по п.2 заставляет ТС почитать о сериализации коллекций, работой с xml как со стороны сервера , так и стандартного механизма среды CLR.

Можно было бы предложить и использование табличных типов, но автор не указал сервер.


А 'мы' это кто ? И с чего мы взяли что я "сую" это в каждую щель. Вы меня ни с кем не путаете? Если так все очевидно, то очевидно было бы автору предложить и очевидный метод - написать процедурку с параметрами и дергать ее.
12 июн 12, 13:31    [12702041]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить