Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
14 / 14 / 8
Регистрация: 12.08.2013
Сообщений: 202
MS Access

Ошибка при проверке наличия строки в ExecuteScalar()

02.03.2016, 10:34. Показов 3680. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Пытаюсь сделать проверку наличия записи в бд(Access), если такой записи нет то ее надо создать.
C#
1
2
3
4
5
6
7
8
9
10
 OleDbCommand mycom = new OleDbCommand("select [ФИО] from names where [ФИО] = '" + this.comboBox1.Text + "';", conn);
                //mycom.Parameters.AddWithValue("@fio1", this.comboBox1.Text);
                
                int countRow = (int) mycom.ExecuteScalar();
                if (countRow == 0 )
                {
                    string com1 = "insert into names  values [ФИО] = " + comboBox1.Text + "";
                    OleDbCommand comm1 = new OleDbCommand(com1, conn);
                    comm1.ExecuteNonQuery();
                }
вижу что countRow = 0, но вылазит ошибка:
Необработанное исключение типа "System.Data.OleDb.OleDbException" в System.Data.dll
Дополнительные сведения: Сбой IErrorInfo.GetDescription с E_FAIL(0x80004005).
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.03.2016, 10:34
Ответы с готовыми решениями:

Ошибка Out of memory при проверке наличия строки S в тексте TStringList
Программа проверяет наличие строки S в тексте TStringList, происходит это около 2000 раз и вылетает ошибка "Out of memory" на...

Ошибка при проверке наличия числа в массиве данных
Есть массив, в который можно поместить числа от 0 до 49. Есть поле Edit, в которое вводится число из головы (от 0 до 49). Есть кнопка,...

Ошибка с запятой в проверке наличия глобального массива $_POST
Доброго времени суток. Занимался с админ-панелью. Выводит вот такую ошибку Parse error: syntax error, unexpected ',' in...

10
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,098
02.03.2016, 13:09
mycom.ExecuteScalar() возвращает значение из 1 столбца 1 строки результата выборки, у вас это явно не количество строк
ну и используйте параметры в командах sql - не заморачивайтесь с кавычками и т.д.

предлагаю вам 2 варианта:
1.
C#
1
2
3
4
5
6
7
8
9
10
OleDbCommand mycom = new OleDbCommand("select count(*) from names where [ФИО] = @name;", conn);
mycom.Parametres.AddWithValue("@name",this.comboBox1.Text);
int countRow = (int) mycom.ExecuteScalar();
                if (countRow == 0 )
                {
                    string com1 = "insert into names  values [ФИО] = @name";
                    OleDbCommand comm1 = new OleDbCommand(com1, conn);
                    comm1.Parametres.AddWithValue("@name",this.comboBox1.Text);
                    comm1.ExecuteNonQuery();
                }
2.
C#
1
2
3
4
5
6
7
8
9
10
OleDbCommand mycom = new OleDbCommand("select [ФИО] from names where [ФИО] = @name;", conn);
mycom.Parametres.AddWithValue("@name",this.comboBox1.Text);
object res =  mycom.ExecuteScalar();
                if (res == null )
                {
                    string com1 = "insert into names  values [ФИО] = @name";
                    OleDbCommand comm1 = new OleDbCommand(com1, conn);
                    comm1.Parametres.AddWithValue("@name",this.comboBox1.Text);
                    comm1.ExecuteNonQuery();
                }
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
02.03.2016, 13:19
Цитата Сообщение от damonxx Посмотреть сообщение
сделать проверку наличия записи в бд(Access), если такой записи нет то ее надо создать.
А если воспользоваться поиском по форуму?
https://www.cyberforum.ru/ado-... 73728.html
0
14 / 14 / 8
Регистрация: 12.08.2013
Сообщений: 202
03.03.2016, 02:55  [ТС]
nedel
на оба варианта таже ошибка.
insite2012
уже пробовал таже ошибка
Таблицу уже пересоздавал.
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
03.03.2016, 04:45
damonxx, может попробовать в строке
C#
1
string com1 = "insert into names  values [ФИО] = " + comboBox1.Text + "";
поставить кавычки вокруг значения, которые вы вставляете из comboBox1? Хотя лично я бы параметры использовал ...
0
14 / 14 / 8
Регистрация: 12.08.2013
Сообщений: 202
03.03.2016, 04:49  [ТС]
kodv
Ни через кавычки ни через параметры не работает.
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
03.03.2016, 07:16
damonxx, ага, все правильно. Посмотрел не только на кавычки, но и на сам запрос. Я, конечно, извиняюсь за эпитет, но это бред. Изучите, для начала, синтаксис команды INSERT. Должно быть либо так (с использованием параметров):
SQL
1
INSERT INTO Names ([ФИО]) VALUES (?)
, либо так:
SQL
1
INSERT INTO Names ([ФИО]) SELECT ?
Добавлено через 1 минуту

Не по теме:

PS: А я смотрю, тут никто особо над самим запросом на задумывался. Также тупо, как и я, копировали из стартового поста :D

0
14 / 14 / 8
Регистрация: 12.08.2013
Сообщений: 202
03.03.2016, 07:50  [ТС]
kodv
А если посмотреть более внимательно то ошибка в int countRow = (int) mycom.ExecuteScalar();
Insert команда нормально работает меня устраивает.
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
03.03.2016, 08:04
damonxx, В ACCESS'е описанный запрос нормально отрабатывает?
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
03.03.2016, 10:29
Лучший ответ Сообщение было отмечено damonxx как решение

Решение

names - ключевое слово. Его нужно брать в квадратные скобки.
https://msdn.microsoft.com/ru-... 20%29.aspx
1
14 / 14 / 8
Регистрация: 12.08.2013
Сообщений: 202
03.03.2016, 10:45  [ТС]
Цитата Сообщение от Igr_ok Посмотреть сообщение
names - ключевое слово. Его нужно брать в квадратные скобки.
Блин тут собака и зарыта была..... спасибо огромное.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.03.2016, 10:45
Помогаю со студенческими работами здесь

Ошибка при проверке конца строки
может кто то подсказать что я делаю не так? текст из textbox в котором находятся несколько строк передается в строку затем поочередно...

Сайт CodeWars при проверке решения выдаёт ошибку, при проверке в VisualStudio ошибки нет
Задача написать метод,который будет проверять порядок круглых скобок. Написал код, проверил в Visual Studio, всё нормально. ...

Ошибка при проверке
∞ Ʃ ((-1)^n) *((x^n)/((2*n)!)) n=0 an=((-1)^n) *((x^n)/((2*n)!)) an-1=((-1)^n-1) *((x^n-1)/((2*n-1)!)) ...

Ошибка при проверке метаданных
После создания формы появилась такая ошибка. Кто-то сталкивался? или посоветуете переделать все сначала?

Ошибка при проверке диапазона
Program p1; var a:array of integer; x,y,m,i:integer; begin writeln('введите колличество чисел, но не болше 100') readln(m); ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru