Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для androidos
29 / 27 / 5
Регистрация: 07.07.2011
Сообщений: 782

Не выполняется проверка на пустое значение в таблице БД

13.04.2012, 23:36. Показов 2025. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем хаи,
вообщем суть проблемы такова.
Есть 2 таблицы:
ЧЕЛОВЕК - СМЕРТь
Мне нужно сделать так. чтобы одного человека я мог добавить в таблицу СМЕРТь только один раз. В случае повторного добавление, выкидывать сообщение или что-то в таком роде.
Делаю проверку, но IF не срабатывает никогда.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
DataTable checkTable = connectionclass.querymethod("SELECT * FROM table2 WHERE ID='" + code + "'");
            DataRowCollection datarows = checkTable.Rows;
            for (int i = 0; i < datarows.Count; i++)
            {
                if (datarows[i] == null)
                {
                    //insert into....
                    MessageBox.Show("OOOOOK");
                  
                }
                else
                {
                    MessageBox.Show("SOME ERROR");
                }
т.е. я проверяю, если есть данные с таким-то кодом, то выкидываем сообщение с ошибкои, иначе добавляем в базу. Где может быть ошибка?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.04.2012, 23:36
Ответы с готовыми решениями:

Проверка на пустое значение
Здравствуйте, товарищи! Сразу извиняюсь если построю вопрос не правильно.))) Вообщем как реализовать в ВБА проверку файла на пустое...

Проверка на пустое значение
Здравствуйте. Пытаюсь сделать проверку на пустое значение, но не получается: static void AddSounds(XmlDocument doc) { ...

VB Проверка на пустое значение
Доброго дня. Очень часто сталкиваюсь с проблемой, когда хочу прочитать значение в ячейке, которая пустая. И программа «вылетает»....

10
 Аватар для _katon_
414 / 265 / 25
Регистрация: 03.10.2011
Сообщений: 1,094
13.04.2012, 23:55
Я так понимаю, что надо в таблице со зловещим названием "Смерть" проверить есть ли запись о человеке. Думаю что запись в таблице "Cмерть" тогда должна состоять минимум из 2-х полей ID и ManID. Получается, что если искать запись по полю ID вы точно ничего не найдете.
Поэтому, чтобы достичь взаимопонимания предлагаю показать стр. данных.
По коду...
1. не закрыт for;
2. что-то как, то у вас все сложно, почему бы не добавить метод в адаптер который бы возвращал количество.. хм... смертей человека и уже тогда выдавал сообщение об ошибке.
0
 Аватар для androidos
29 / 27 / 5
Регистрация: 07.07.2011
Сообщений: 782
14.04.2012, 00:13  [ТС]
Стр данных проста, в таблице человек - code, name, lastname, gender, age
смерть - id, code, time_of_death, reason_of_death

for закрыт, у меня ж компилится )) не перетащил просто
можно сделать отдельный метод, но это не суть пока, тут в самой логике косяк где-то.

ищу не по ид, а по полю КОД, где хранится код человека. При переносе неправильно поправил просто. Вот. Ну я думаю так, что если ничего не наидено в таблице смерть с таким кодом,(а раз ничего не наидено, то и кода там не может быть такого), то тогда добавляем, иначе - еррор. Вроде же правильная мысль
0
 Аватар для _katon_
414 / 265 / 25
Регистрация: 03.10.2011
Сообщений: 1,094
14.04.2012, 00:18
мысль правильная и должно работать, если в where заменить ID на Code. В C# код может быть много проще и можно избежать цикла.
0
 Аватар для androidos
29 / 27 / 5
Регистрация: 07.07.2011
Сообщений: 782
14.04.2012, 00:23  [ТС]
мм ну должно, но не работает, MessageBox в ID вообще не появляется, если кликаешь по тому человеку, где на самом деле есть уже смерть, то срабатывает ELSE, как и должно, а в других случаях - ничего, как-будто нет никакого деиствия на кнопку.
Мне бы сделать. что б с циклом работало, а потом уже улучшать, так как не знаю как без цикла.
0
49 / 49 / 7
Регистрация: 03.12.2010
Сообщений: 229
14.04.2012, 00:25
Цитата Сообщение от androidos Посмотреть сообщение
if (datarows[i] == null)
Строка таблицы не может быть == null, поэтому это условие всегда == false
1
 Аватар для androidos
29 / 27 / 5
Регистрация: 07.07.2011
Сообщений: 782
14.04.2012, 00:34  [ТС]
может подскажете тофда как проверить на пустое значение?
0
 Аватар для _katon_
414 / 265 / 25
Регистрация: 03.10.2011
Сообщений: 1,094
14.04.2012, 10:34
а не надо проверять))
DataTable checkTable = connectionclass.querymethod("SELECT * FROM table2 WHERE Code = '" + code + "'");
DataRowCollection datarows = checkTable.Rows;
if(checkTable.Count > 0)
{
MessageBox.Show("SOME ERROR");
}
else
{
//Делаем запись о смерти
MessageBox.Show("OOOOOK");
}
1
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
14.04.2012, 12:53
а почему бы не использовать простой запрос ExecuteNonQuery() как я писал в предыдущей теме, вместо того чтоб юзать тяжеловесный адаптер?
1
 Аватар для androidos
29 / 27 / 5
Регистрация: 07.07.2011
Сообщений: 782
14.04.2012, 20:00  [ТС]
Спасиб, так всё работает
Learx, я просто ни разу не пробовал с ExecuteNonQuery(). Если лучше его юзать, то просвяти как, если не трудно.
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
14.04.2012, 23:48
в ADO NET есть объект OleDbCommand. ему в параметр CommandText забиваешь sql-запрос.
потом этот запрос можно выполнить несколькими методами:
1. ExecuteNonQuery() - просто выполняет запрос, возвращает кол-во обработанных строк
2. ExecuteScalar() - выполняет запрос и возвращает объект-значение первого столбца первой строки. удобно если необходимо выполнить одну агрегатную фун-цию(сума, кол-во строк и т.д.
3. ExecuteReader() - выполняет запрос и возвращает курсор для чтения инфы типа OleDbReader. при помощи него можно извлекать результат постиочно.

в твоем случае достаточно что-то вроде:
C#
1
2
3
4
5
6
7
8
9
10
11
OleDbConnection conn = ...
OleDbCommand comm = new OleDbCommand("Select count(*) from table2 where id="+id_people", conn);
conn.Open();
If(comm.ExecuteNonQuery==DbNull.Value)
{
MessageBox.Show("Ok");
}
else 
{
MessageBox.Show("Error");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.04.2012, 23:48
Помогаю со студенческими работами здесь

Проверка на пустое значение поля
Доброго времени суток! Есть поле, значение которого я хочу присвоить Edit. Проблема возникает, если это поле имеет значение null. ...

Проверка на пустое значение строки
есть такой файл: а так я его считиваю в поля: дело в том что надо обойти пустую строку. как это сделать? while ((c =...

не работает проверка на пустое значение
Второй вопрос, почему не работает проверка на пустое значение? var num1; var num2; num1 =...

Проверка ячеек StringGrid на пустое значение
Доброго Времени суток! Нужна помощь: Присваиваю переменной числовое значение из ячейки StringGrid' a, а потом провожу математические...

Проверка ячейки в dataGridView на пустое значение
Есть форма с датагридом (1 строка 4 ячейки) dataGridView1.Rows.Cells.Value = &quot;0&quot;; ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru