Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094

Загрузить коллекцию в базу данных

02.04.2020, 18:25. Показов 600. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
С тем чтобы добавить одну запись в БД проблем нету, всё работает.
Подскажите, я хочу отправить в метод не один объект, а коллекцию, не могу понять, как её добавить в БД.
Сейчас я циклом вызываю метод Add, но это так себе решение.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 public int Add(Company Company)
        {
            var cmd = new SqlCommand("MD.CompanyAdd", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandTimeout = 0;
 
            try
            {
                conn.Open();
 
                cmd.Parameters.AddWithValue("@CompanyName", Company.CompanyName);
                cmd.Parameters.AddWithValue("@CompanyCode", Company.CompanyCode);
                cmd.Parameters.AddWithValue("@RateType", Company.RateType);
 
                var result = cmd.ExecuteScalar();
 
                //var result = cmd.ExecuteNonQuery();
                //var qwe = result.ToString();
 
                return int.Parse(result.ToString());
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Exception: " + ex.Message);
                throw;
            }
            finally
            {
                conn.Close();
            }
        }
Я так понимаю, надо что-то делать с DataTable
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class CompanyRepository
    {
        private string _connectionString;
        private SqlConnection conn;
 
        public CompanyRepository(string ConnectionString)
        {
            _connectionString = ConnectionString;
            conn = new SqlConnection(_connectionString);
        }
 
        public void AddList(IList<Company> Companies)
        {
            try
            {
                conn.Open();
 
                var cmd = new SqlCommand("MD.CompanyAddList", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandTimeout = 0;
 
                DataTable dataTable = new DataTable();
 
                dataTable.Columns.Add("[CompanyCode]", typeof(string));
                dataTable.Columns.Add("[CompanyName]", typeof(string));
                dataTable.Columns.Add("[RateType]", typeof(string));
 
 
                foreach (var Company in Companies)
                {
                    dataTable.Rows.Add(Company);
                }
 
                cmd.Parameters.AddWithValue("@ImportTable", dataTable);
 
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Exception: " + ex.Message);
                throw;
            }
            finally
            {
                conn.Close();
            }
        }
    }
 
    public class Company 
    {
        public int CompanyId { get; set; } // CompanyID (Primary key)
        public string CompanyCode { get; set; } // CompanyCode (length: 10)
        public string CompanyName { get; set; } // CompanyName (length: 256)
        public int? RateType { get; set; } // RateType
 
    }
Что я не так делаю?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.04.2020, 18:25
Ответы с готовыми решениями:

Загрузить в базу массив данных.
Подключаю базу данных при помощи datagridview, загружаю данные из формы и заполняю ими массив по кнопке, затем по другой кнопке обрабатываю...

Как загрузить картинки в базу данных?
Пожалуйста, помогите, что писать в private void button2_Click, чтобы данные загружались в БД using System; using...

Загрузить картинку через форму в базу данных
Ребят, возникла проблема. В теме на форуме увидела код для загрузки фотографии в БД. Решила сделать так же. И ничего, выдает ошибку. А...

6
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
03.04.2020, 11:12
Цитата Сообщение от Чипс Посмотреть сообщение
но это так себе решение
.. Нормальное решение, команда INSERT на sql сервере так и работает, запись за записью ... Если вы хотите использовать SqlDataAdapter, т.е. редактировать DataSet, а пото делать Update - это другой подход, читайте SqlDataAdapter ...
0
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
03.04.2020, 11:16  [ТС]
Mission Impossible

Добавлено через 58 секунд
Цитата Сообщение от carrotik Посмотреть сообщение
Нормальное решение, команда INSERT
У меня есть такая команда

Добавлено через 1 минуту
Мне на сервер надо отправить коллекцию, а чего он там с ней делать будет это уже не моя задача.
Но что-то не работает и я не могу понять, где ошибка, неправильный код SQL или C#
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
03.04.2020, 11:22
Чипс,
.. вообще говоря, SQL-серверы (MS и другие) поддерживают процедуру BULK INSERT (в просторечии - "вали кулём"), но только из файла ... если вам надо отправить коллекцию, то все равно это делается циклом, даже если этим неявно заниаются SqlDataAdapter или EntityFramework ...
0
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
03.04.2020, 11:38  [ТС]
Цитата Сообщение от carrotik Посмотреть сообщение
то все равно это делается циклом,
Так, а как это сделать?
Я ведь это и пытаюсь выяснить

Добавлено через 1 минуту
Вот в метод поступает коллекция, мне надо вызвать хранимую процедуру которая примет это коллекцию, но я не знаю, как в передаваемые параметры хранимой процедуры отправить целую коллекцию!

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public void AddList(IList<Company> Companies)
        {
            try
            {
                conn.Open();
 
                var cmd = new SqlCommand("MD.CompanyAddList", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandTimeout = 0;
 
                DataTable dataTable = new DataTable();
 
                dataTable.Columns.Add("[CompanyCode]", typeof(string));
                dataTable.Columns.Add("[CompanyName]", typeof(string));
                dataTable.Columns.Add("[RateType]", typeof(string));
 
 
                foreach (var Company in Companies)
                {
                    dataTable.Rows.Add(Company);
                }
 
                cmd.Parameters.AddWithValue("@ImportTable", dataTable);
 
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Exception: " + ex.Message);
                throw;
            }
            finally
            {
                conn.Close();
            }
        }
    }
Добавлено через 1 минуту
Чего там сервер будет делать с этой коллекцией меня вообще не интересует, мне надо только вызвать процедуру и передать ей коллекцию на стороне C#
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
03.04.2020, 11:47
..если есть такое желание сделать это хранимой процедурой, то в интернетах пишут, что это возможно, но как по мне -
это через одно место .. Но на вкус и цвет ...

How to insert a multiple rows in SQL using stored procedures?
0
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
03.04.2020, 12:51  [ТС]
Цитата Сообщение от carrotik Посмотреть сообщение
How to insert a multiple rows in SQL using stored procedures?
Там примеры, как создать хранимую процедуру, но нет примера её вызова из кода C#.
Процедура у меня есть, я не знаю, как её вызвать.

Добавлено через 11 минут
Вот ответ
https://stackoverflow.com/ques... le-records

Ну вот, теперь на форуме появляются ссылки на другие форумы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.04.2020, 12:51
Помогаю со студенческими работами здесь

Загрузить в базу данных
Пытаюсь из текстового файла загрузить записи в базу данных. Получается, что записи появляются с пробелами, как можно корректнее сделать?...

Загрузить собственную базу данных
Есть своя база данных &quot;mydb&quot; с таблицей &quot;table&quot;. Как добавить базу данных в свое приложение и открыть таблицу &quot;table&quot;? Как...

Как загрузить картинку в базу данных
Не получается загрузить картинку из Image в базу данных Access. В Access создано поле (для хранения картинок) с типом данных Поле объекта...

Не получается загрузить картинку в базу данных Django
Пишу сайт на djangо изучаю его неделю. Не получается загрузить картинку в базу данных. Выходит надпись This field is required. и все сижу 2...

Загрузить фотографии в базу данных из окна формы
Задачка описана в заголовке))) работаю на Ембаркадеро и МС СКЛ


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru