Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
16 / 16 / 3
Регистрация: 07.04.2010
Сообщений: 145
.NET 4.x

Поиск по массиву и добавление отсутствующих элементов в БД

23.12.2012, 18:57. Показов 1398. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
string[] firma = { "Прод экспо", "Владтрейд, ООО", "ТропикАгроТрейд, ООО", "Компания ЛиК, ООО" };
// сам массив
                string[] wrds = new string[10000];
                int b = 0;
                while(b <= 5)
                {
                    listBox2.SelectedIndex = b;
                    string sostav = listBox2.SelectedValue.ToString();
                    string[] words = sostav.Split(',');
                     
                    int w = 0, g = 0;
                            foreach (string word in words)
                            {
                                string wrd = word;
                                if (w > 0)
                                {
                                    wrd = word.Substring(1, word.Length - 1);
                                }
                                DateTime dt =DateTime.Now;
                                Random r = new Random();
// проверяет если это имя в массиве
                                if (wrds.Contains(wrd)==false)
                                {
                                    int srok = r.Next(1, 3);
                                    oleDbConnection3.Open();
                                    string sql = "INSERT INTO [Заведующий складом]([Название продукта], [Дата закупки], [Срок годности], [Стоимость], [Фирма постав], [Шт на складу]) VALUES('"
                                            + wrd + "', '" + dt.AddDays(r.Next(1, 30)).ToShortDateString() + "', '" + srok.ToString() + "год" + "', '" + r.Next(20, 100).ToString() + "', '" + firma[r.Next(0, 4)].ToString() + "', '" + r.Next(10, 20) + "')";
 
                                    OleDbCommand cmd = new OleDbCommand(sql, oleDbConnection3);
                                    cmd.ExecuteNonQuery();
                                    cmd.Dispose();
                                    oleDbConnection3.Close();
// добавляет значение в массив
                                    wrds[g] = wrd;
                                    ++g;
                                    ++w;
                                }
                                oleDbDataAdapter3.Fill(dataSet11);
                            }
                            
                            w = 0;
                    ++b;
                }
                ++a;
            }
А когда проверяю бд то оно без проверки все засунула не пойму почему

Добавлено через 2 часа 48 минут
Проверил на обратное если содержится то работало правильно, мне нужно если его там нету и добавить
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.12.2012, 18:57
Ответы с готовыми решениями:

Добавление отсутствующих элементов из одного массива в другой
Есть 2 строковых массива со словами. Необходимо сравнить эти 2 массива и добавить недостающие слова из первого массива во второй. Ну или...

Добавление элементов к динамическому массиву
Подскажите, пожалуйста, можно ли в процессе работы программы увеличивать длину дин. массива при этом не удаляя его содержимого? Т.е. уже...

Добавление отсутствующих библиотек
Волею случая пришлось использовать VS2010, в котором, как выяснялось отсутствуют библиотеки Microsoft.Web, Media-Player-ASP.NET-Control,...

2
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
25.12.2012, 18:40
Для начала используйте TrimEnd вместо этого безобразия:

C#
1
2
3
4
if (w > 0)
                                {
                                    wrd = word.Substring(1, word.Length - 1);
                                }
и List<string> wrds вместо массива ... и wrds.Add(wrd) вместо
C#
1
2
 wrds[g] = wrd;                                    
  ++g;
и что именно не верно сложно сказать .. надо дебагером проверять каждый шаг.


P.S. лично я бы использовал linq:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
         List<string> res = new List<string>(); //массив-результат
         //заполняем значениями
         for(int i=0 i<6; i++)
         {
             res.AddRange(listBox2.Items[i].Split(',');
         }
         //избавляемся от пробелов
         res.ForEach(f => f.TrimEnd(' '));
        //Открываем соединение с бд
                    res.Distinct().ToList() //получаем список с неповторимыми элементами
              .ForEach(
                f =>
                {
                      //добавлем рядок в БД
                }
            );
1. не прийдется на каждом шаге вызывать Contains
2. не прийдется каждый раз дергать подключение к БД все строки сразу добавятся при одном подключении
0
 Аватар для kmi
55 / 55 / 14
Регистрация: 26.04.2010
Сообщений: 177
27.12.2012, 11:05
Цитата Сообщение от kazrulit Посмотреть сообщение
А когда проверяю бд то оно без проверки все засунула не пойму почему
Без проверки?
Вроде, судя по коду, проверку обойти никак не получится. Т.о. проверка (wrds.Contains(wrd)==false)
происходит и выдаёт true. Итог - вставка записи.
Мне кажется, что проблема в том, что массив wrds у Вас содержит 10000 пустых строк. Т.о. проверка работает корректно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.12.2012, 11:05
Помогаю со студенческими работами здесь

Поиск количества элементов по массиву
incount e array = if length array == 1 then if array == then 1 else 0 else if (head array) == e then (incount e (tail array)) + 1 else...

Добавление элементов к дереву, удаление элементов и поиск уровня с наибольшей суммой элементов
Помогите пожалуйста! нужно разработать программу для работы с деревом. В узлах дерева содержатся символы. Дерево должно быть...

Нахождение элементов, которые принадлежат и массиву a и массиву b (segmentation fault)
добрый день, стоит задача нахождения элементов, которые принадлежат и массиву а и массиву б. вот код: #include &lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru