Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, Entity Framework
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
6 / 6 / 2
Регистрация: 11.04.2011
Сообщений: 260

Неправильная логика добавления в БД Firebird

06.09.2012, 14:17. Показов 1272. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Очень прошу вашей помощи!

Есть таблица DataGridView в неё вводятся данные

Выглядит это вот так:
Неправильная логика добавления в БД Firebird

При таком раскладе всё нормально добавляется. Единственное - это то, что если в поле ID будут повторяться номера, то оно их не должно добавлять.

Вопрос в том, как сделать так, чтобы добавляло строчку, даже если в ней есть пустые ячейки:
Типа того:
Неправильная логика добавления в БД Firebird


т.е. если в одной строчке хотя бы одно поле пустое, то оно эту строчку вообще пропускает.
нужно чтобы так и оставались пустые поля. Т.е. как на табличке, так и в базе.

Вот код, как я это делаю:

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
private void button1_Click(object sender, EventArgs e)
        {
        using (connection = new FbConnection())
            {
                FbConnectionStringBuilder csb = new FbConnectionStringBuilder();
                csb.ServerType = FbServerType.Default;
                csb.Database = tb_db.Text;
                csb.Password = "masterkey"; //            "masterkey";
                csb.UserID = "sysdba";       //            "SYSDBA";
                connection = new FbConnection(csb.ToString());
                try { connection.Open(); }
                catch { SS_Error.Text = "Ошибка соединения с базой"; }
                for (int i = 0; i < dataGridView1.RowCount - 1; i++)
                {
                    try
                    {
                        fbCom1 = new FbCommand("INSERT INTO NEW_TABLE ID,NAME,TYPE) VALUES (@id,@name,@type)", connection);
                        fbCom1.Parameters.AddWithValue("id", dataGridView1[0, i].Value); 
                        fbCom1.Parameters.AddWithValue("name", dataGridView1[1, i].Value.ToString());
                        fbCom1.Parameters.AddWithValue("type", dataGridView1[2, i].Value.ToString());
                        fbCom1.ExecuteNonQuery();
                    }
                    catch { }
                }
                connection.Close();
 
                SS_Completed.Text = "Данные успешно добавлены";
            }
          }
Буду очень благодарен за помощь! )
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.09.2012, 14:17
Ответы с готовыми решениями:

неправильная ЛОГИКА, или задачи заводящие в тупик
У тебя случайно не monax информатичкой был?

Код добавления в базу Firebird
здравствуйте! Такая проблемка, есть таблица с 400 записями (доступ к таблице через ibexpert, там создал процедурку добавления =&gt;begin ...

Игра "Змейка", ошибка "Globals.Close не объявлен", неправильная логика игры
Нашёл в интернете код игры &quot;змейка&quot; и саму скомпилированную игру. Но есть загвоздка. А точнее две using System; using...

5
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
06.09.2012, 15:03
Так в чем проблема? Не добавляет строки с пустыми полями? Должно добавлять, если колонка не обозначена как NOT NULL
0
6 / 6 / 2
Регистрация: 11.04.2011
Сообщений: 260
06.09.2012, 15:29  [ТС]
Да, да. Именно. Не добавляет строки с пустыми полями... Не знаю почему ((( Нигде not_null нету
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
06.09.2012, 15:39
Покажи скрипт создания таблицы. И заодно неплохо бы выводить текст ошибки после ExecuteNonQuery (и вообще любого действия с БД).
0
6 / 6 / 2
Регистрация: 11.04.2011
Сообщений: 260
06.09.2012, 15:56  [ТС]
что вы имеете в виду под скриптом создания таблицы? где это можно посмотреть? простите, я новичок в Firebird ((

Сделал вот так:
C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 for (int i = 0; i < dataGridView1.RowCount - 1; i++)
                {
                    try
                    {
                      fbCom1 = new FbCommand("INSERT INTO MODULES_BENISH IMEI,NAME,PHONE_NUMBER,NOTES,ID_DEPO,ID_ROAD,ID_SEC,ID_GPS) VALUES (@imei,@name,@phone_number,@notes,@id_depo,@id_road,@id_sec,@id_gps)", connection);
                      fbCom1.Parameters.AddWithValue("imei", dataGridView1[0, i].Value);
                      fbCom1.Parameters.AddWithValue("name", dataGridView1[1, i].Value.ToString());
                      fbCom1.Parameters.AddWithValue("phone_number", dataGridView1[2, i].Value.ToString());
                      fbCom1.Parameters.AddWithValue("notes", dataGridView1[3, i].Value.ToString());
                      fbCom1.Parameters.AddWithValue("id_depo", dataGridView1[4, i].Value.ToString());
                      fbCom1.Parameters.AddWithValue("id_road", dataGridView1[5, i].Value.ToString());
                      fbCom1.Parameters.AddWithValue("id_sec", dataGridView1[6, i].Value.ToString());
                      fbCom1.Parameters.AddWithValue("id_gps", dataGridView1[7, i].Value.ToString());
                      fbCom1.ExecuteNonQuery();
                    }
                    catch { }
                }


Ошибка:"В экземпляре объекта не задана ссылка на объект." - это если не заполнена хотя бы одна ячейка.

Ошибка: "Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 28
IMEI" - если заполнены все поля...

Поле IMEI содержит только уникальные данные. Но таблица пустая. Т.е. возможность повторения данных исключена... ((
0
1 / 1 / 0
Регистрация: 11.09.2012
Сообщений: 7
11.09.2012, 12:19
в ibExperte вытащи скрипт DDL (закладка) скопируй и покажи не совсем понятна
структура таблицы
Если поле imei должно быть уникальным и не вводиться пользователем то сделай на него генератор.
Если же руками вводится то где первичный ключ????

и вообще при работе с FB советую использовать "ручную" обработку данных ... так проще контролировать процесс работы с БД (это чисто мое мнение и касается оно чисто FB).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.09.2012, 12:19
Помогаю со студенческими работами здесь

FireBird + Interbase&Firebird Development Studio
Установил FireBird 2.5 SuperClassic и Interbase&amp;Firebird Development Studio. Зашел в студию, создал таблицу, пытаюсь создать БД - выдает...

Разбиение строки в FireBird - Firebird/InterBase
Продолжая тему отсюда: https://www.cyberforum.ru/firebird/thread309236.html :wall: Есть поле типа VARCHAR, в котором хранятся данные вида...

Страшная анимация таблицы, после добавления кодом на View и добавления Constraint-ов
делаю дропдаун, чтобы можно было в любом месте вызвать и он разворачивался из нужной вьюшки. дропдаун вьюшку загружаю из ксиба, добавляю...

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

Возможность добавления файлов после добавления
&lt;form method=&quot;POST&quot; enctype=&quot;multipart/form-data&quot; action=&quot;&quot;&gt; &lt;input type=&quot;file&quot; multiple name=&quot;file&quot; size=&quot;20&quot;&gt;FILE&lt;hr&gt; &lt;input...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Агрегаты и сущности в DDD микросервисах
Javaican 10.04.2025
Разработка современных программных систем часто приводит на распутье: монолит или микросервисы? Даже при выборе микросервисной архитектуры многие команды сталкиваются с проблемой правильного. . .
Многопоточность в C#: Task и параллельное программирование
UnmanagedCoder 10.04.2025
Современные процессоры уже давно перестали наращивать тактовую частоту в пользу увеличения количества ядер. Это создало интересную ситуацию: разработчики, привыкшие к последовательному. . .
Линейное решение нелинейной задачи. Формулы от LM по моему решению пока не проверял. В итоговой её формуле видно её заблуждение.
Hrethgir 10.04.2025
В продолжение Эта LM дала ответ похожий на нормальный. В комментриях мой комментарий - похоже она ошиблась с выведением итоговой формулы, но остальные проверю. Assistant qwen2. 5-14b-instruct . . . .
Переменные в Python
py-thonny 10.04.2025
Переменная в программировании — это символическое имя, связанное с областью памяти, в которой хранится значение. Она позволяет получать доступ к данным через понятные человеку идентификаторы, а не. . .
Многопоточность в C#: Task и асинхронные операции
UnmanagedCoder 10.04.2025
Многопоточность позволяет выполнять несколько операций одновременно, что важно для решения двух основных задач: повышения скорости выполнения вычислительно-сложных операций и сохранения отзывчивости. . .
Линейное решение не линейной задачи (емкость вычислений в сравнении с традиционными решениями пока не определена).
Hrethgir 10.04.2025
В рамках предстоящих вычислений пришлось (да, я тоже знаю про корень числа, и про степеня, и прочие теоремы, но. . . ) найти способ нахождения отношения двух углов. . . .
Запуск контейнеров Docker на ARM64
Mr. Docker 09.04.2025
Появление таких решений, как Apple M1/ M2, AWS Graviton, Ampere Altra и Raspberry Pi, сделало использование ARM-систем обыденностью для многих разработчиков и DevOps-инженеров. При этом Docker,. . .
Vue SFC компонент на PHP с Fusion
Jason-Webb 09.04.2025
PHP на сервере и JavaScript на клиенте — классическое сочетание, которое, несмотря на свою эффективность, создает определенный когнитивный диссонанс при разработке. В этом контексте появляются. . .
TypeScript vs JavaScript: Отличия и когда что использовать
Reangularity 09.04.2025
JavaScript появился в 1995 году как творение Брендана Эйха и быстро стал основой интерактивности в вебе. За свою историю он прошел путь от простого языка для манипуляций с DOM до полноценной. . .
Подключение Kafka к Elasticsearch
Codd 09.04.2025
Apache Kafka и Elasticsearch — две мощные технологии, которые при совместном использовании создают эффективную платформу для обработки и анализа данных в реальном времени. Kafka, выступая в роли. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер