Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/22: Рейтинг темы: голосов - 22, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21

Ругается на "cmd.ExecuteNonQuery();"

09.06.2013, 15:30. Показов 4428. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Прошу помощь, так как сам уже просто отчаялся!
есть хранимая процедура:
T-SQL
1
2
3
4
5
6
7
8
9
10
CREATE PROCEDURE [dbo].[InsPrib]
    @tk nvarchar(50),
    @treck nvarchar(50)
AS
    INSERT INTO Прибыло
              ([tk]
          ,[treck])
    VALUES 
         (@tk
         ,@treck)
и есть на форме : dataGirdView1 и textBox2
А так же есть кнопка button1
Так вот как правильно реализовать по нажатию кнопки передачу параметров в хранимую процедуру (@tk nvarchar(50), @treck nvarchar(50)) где значение tk нужно взять из textBox2, а значения treck из dataGirdView1
Пример моего кода (тут при выполнении ругается на "cmd.ExecuteNonQuery();" :
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 private void button1_Click(object sender, EventArgs e)
        {
            string store = "dbo.InsPrib";
            using (SqlConnection connection = new SqlConnection(@"Data Source=(localdb)\Projects;Initial Catalog=Skladvpekine;Integrated Security=True;Pooling=False;Connect Timeout=30"))
            
            {
                SqlCommand cmd = new SqlCommand(store, connection);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "dbo.InsPrib";
                cmd.Parameters.AddWithValue("@tk", textBox2.Text);
                cmd.Parameters.AddWithValue("@treck", dataGridView1.Rows);
                SqlParameter tk = new SqlParameter("@tk", SqlDbType.NVarChar, 50);
                SqlParameter treck = new SqlParameter("@treck", SqlDbType.NVarChar, 50);
                connection.Open();
                cmd.ExecuteNonQuery();
                connection.Close();
 
 
 
            }
        }
Буду рад отблагодарить любого кто поможет!
Спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.06.2013, 15:30
Ответы с готовыми решениями:

При попытке записать в новую строку из textbox ругается на inscmd.ExecuteNonQuery
При попытке записать в новую строку An unhandled exception of type 'System.ArgumentException' occurred in System.Data.dll Additional...

Программа ругается на cmd.ExecuteNonQuery()
Здравствуйте. Подскажите пожалуйста, где у меня ошибка в коде(ругается на cmd.ExecuteNonQuery()). Предупреждаю сразу, что в C# я...

Ругается на ExecuteNonQuery();
string card = "TransistorCard"; sqlConnection.Open(); using (var MyConnection = new...

35
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
16.06.2013, 20:46  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от 23Alex24 Посмотреть сообщение
ну само собой там придется использовать цикл или что-то на подобие =) суть задачи скажите, чтобы лишний раз вас не тормошить и стало более менее понятно что надо сделать - хотя бы чуть чуть расскажите что пытаетесь сделать и для чего, возможно вы где-то подход не правильный выбрали
Да Вы правы!) Вы меня не тормошите Вы мне помогаете, за что отблагодарю!
Имеется форма.
На ней есть:
1)dataGirdView (если есть, аналогичные варианты, более подходящие для решения задачи, то буду счастлив узнать о них)
в ней есть два столбца: tk и treck
2) и есть кнопка button1
Как сделать так, что бы при нажатии на кнопку button1, из базы данных "Пекин", вызывалась бы хранимая процедура "Prib" с входными параметрами @tk, @treck, и в эти параметры передать значения из каждой строки столбцов tk и treck таблицы dataGirdView.
Если есть вариант, что бы в таблицу записывались значения не всем массивом в одну запись, а, как бы по строчке
т.е : tk(значение первой ячейки) treck(значение первой ячейки) и так далее вторая строка, третья...как то так...
Если, не понятно объяснил, не могли бы Вы дать свой скайп?)
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
17.06.2013, 09:02
Вроде понял, а в таблице как появляются данные строчки? может просто сделать, так, чтобы в базу добавлялась новая запись когда в табличку что-то добавляют?)
1
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
17.06.2013, 15:40  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Вроде понял, а в таблице как появляются данные строчки? может просто сделать, так, чтобы в базу добавлялась новая запись когда в табличку что-то добавляют?)
Вся таблица из datagirdview прямо по строчке....как объяснить то...есть в datagird view 5 строчек, и эти 5 строчек добавляются в таблицу отдельными записями)
В базу добавлялась новая запись? хмм....можно и так, но просто мне дальше надо будет реализовать поиск по этим записям, и там где запись со стороны клиентской таблицы, равна записи складской таблицы нужно вытащить будет все данные о клиенте по этим записям и вставить складскую таблицу...(((
Может действительно Ваш вариант проще и я сам себе и Вам усложняю жизнь?
давайте попробуем....
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
17.06.2013, 15:56
я про другое немножко спрашивал, откуда берутся эти 5 строчек в datagird view? вы их вручную вбиваете? =) Если да, то лучше сделать механизм таким, что когда вбили новую строчку, то она добавляется в базу данных, и получается, что вы не сначала добавите на клиенте 5 строчек, а потом они в базу добавятся, а при добавлении новой строчки сразу будет и в базу заноситься, поиск и прочее это уже отдельный вопрос, но это тоже вполне реализуемо =)
1
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
17.06.2013, 18:16  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
я про другое немножко спрашивал, откуда берутся эти 5 строчек в datagird view? вы их вручную вбиваете? =) Если да, то лучше сделать механизм таким, что когда вбили новую строчку, то она добавляется в базу данных, и получается, что вы не сначала добавите на клиенте 5 строчек, а потом они в базу добавятся, а при добавлении новой строчки сразу будет и в базу заноситься, поиск и прочее это уже отдельный вопрос, но это тоже вполне реализуемо =)
Да вбиваю вручную на клиенте, но я просто начитался, что с помощью хп база меньше грузиться, скажем если таких клиентов будет одновременно 10 штук и все одновременно будут что то заносить в базу, не будет ли это слишком сильно давить на сервер?
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
17.06.2013, 19:36
А у вас реально будет так?) вообще 10 человек посути это мало =) у нас на работе куда больше работают, вроде ничего, проблем не было, причем там явно никто почти оптимизацией не занимается =)
1
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
17.06.2013, 19:40  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
А у вас реально будет так?) вообще 10 человек посути это мало =) у нас на работе куда больше работают, вроде ничего, проблем не было, причем там явно никто почти оптимизацией не занимается =)
Да реально)))а ну тогда все ок, я и цеплялся за хранимки, только потому, что боялся из-за больших нагрузок на бд)))
А где работаете, если не секрет?)
Тогда может просто через адаптер, нажатием кнопки?
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
17.06.2013, 20:05
Да так в одной фирмейке =) Да нет, я предлагаю так же через хранимки, только добавление будет происходить когда вы будете добавлять новую строку на клиенте, отлавливаем там событие какое-нибудь и по нему вызываем нашу хранимку, конечно тогда минус в том, что много запросов, но если они не тяжелые, то выполняться будут быстро, тогда количество не мешает, из плюсов то, что мы как бы для каждой записи сразу будем проверять корректные ли данные, а если их добавлять все сразу, то там пользователь будет мучиться пока не исправит все ошибки , с адаптером для заполнения честно не работал ) использовал его пару раз для селекта, чтобы результирующие данные в DataTable запихнуть =) Обычно пользуюсь Linq to sql или через Command выполняю =)

Добавлено через 29 секунд
Если не совсем понятно могу по шагам описать порядок действий =)

Добавлено через 2 минуты
Ну и кстати если у вас мультиюзерская прога, то надо будет как-то отслеживать, чтобы одну и ту же запись не пытались редактировать несколько юзеров, так же избегайте статических переменных, из-за них могут быть галюны, которые потом тяжело будет отследить)
1
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
17.06.2013, 20:12  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Да так в одной фирмейке =) Да нет, я предлагаю так же через хранимки, только добавление будет происходить когда вы будете добавлять новую строку на клиенте, отлавливаем там событие какое-нибудь и по нему вызываем нашу хранимку, конечно тогда минус в том, что много запросов, но если они не тяжелые, то выполняться будут быстро, тогда количество не мешает, из плюсов то, что мы как бы для каждой записи сразу будем проверять корректные ли данные, а если их добавлять все сразу, то там пользователь будет мучиться пока не исправит все ошибки , с адаптером для заполнения честно не работал ) использовал его пару раз для селекта, чтобы результирующие данные в DataTable запихнуть =) Обычно пользуюсь Linq to sql или через Command выполняю =)

Добавлено через 29 секунд
Если не совсем понятно могу по шагам описать порядок действий =)

Добавлено через 2 минуты
Ну и кстати если у вас мультиюзерская прога, то надо будет как-то отслеживать, чтобы одну и ту же запись не пытались редактировать несколько юзеров, так же избегайте статических переменных, из-за них могут быть галюны, которые потом тяжело будет отследить)

Отличная идея!!
Спасибо Вам! Можно ловить события нажатия Enter из текстбокса из которого будет добавляться записи в datagirdview....Если Вам не сложно, пожалуйста, Вы не могли бы чиркануть пример кода какой-нибудь... а то я опять тупить полгода буду)

"пытались редактировать несколько юзеров, так же избегайте статических переменных, из-за них могут быть галюны, которые потом тяжело будет отследить)"

Вот тут только непонятно...как этого можно избежать?))

Добавлено через 2 минуты
Цитата Сообщение от nubiara Посмотреть сообщение
Отличная идея!!
Спасибо Вам! Можно ловить события нажатия Enter из текстбокса из которого будет добавляться записи в datagirdview....Если Вам не сложно, пожалуйста, Вы не могли бы чиркануть пример кода какой-нибудь... а то я опять тупить полгода буду)

"пытались редактировать несколько юзеров, так же избегайте статических переменных, из-за них могут быть галюны, которые потом тяжело будет отследить)"

Вот тут только непонятно...как этого можно избежать?))
ан нет, пример кода не нужно, спасибо)
Сам догадался!)
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
17.06.2013, 20:42
Сейчас студии под рукой нет, вы если что сюда отправляйте код, подредактирую или подскажу =) На счет статических переменных - их не использовать просто, потому что может возникнуть такая ситуация - зашел юзер 1, что-то поделал, у вас в статическую переменную А занеслось значение, потом зашел юзер 2 на ту же форму, а у него уже в этой переменной лежит то значение, которое занес юзер 1, конечно в некоторых случаях и можно их использовать, но будьте аккуратней =)

Добавлено через 6 минут
Вообще можете посмотреть, скорей всего у этого грида есть событие на подобие OnRowInserted или что-то такое, это будет лучше, чем по нажатии enter пытаться это сделать =)
1
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
17.06.2013, 20:44  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Сейчас студии под рукой нет, вы если что сюда отправляйте код, подредактирую или подскажу =) На счет статических переменных - их не использовать просто, потому что может возникнуть такая ситуация - зашел юзер 1, что-то поделал, у вас в статическую переменную А занеслось значение, потом зашел юзер 2 на ту же форму, а у него уже в этой переменной лежит то значение, которое занес юзер 1, конечно в некоторых случаях и можно их использовать, но будьте аккуратней =)

Добавлено через 6 минут
Вообще можете посмотреть, скорей всего у этого грида есть событие на подобие OnRowInserted или что-то такое, это будет лучше, чем по нажатии enter пытаться это сделать =)
Сейчас буду пробовать спасибо!)))))
а может Вы заодно подскажите, как лучше реализовать кнопку отмена, что бы отменить только что добавленные строки...
Как мне Вас благодарить?
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
17.06.2013, 20:55
Да никак, кому-то я помогу, кто-то мне поможет =)

А можно скриншотик интерфейса(интересует как вы добавляете строки в грид) я бы тогда смог более подробно объяснить, по нажатии на отмену мы просто не должны делать запрос на добавление записи, все просто =) Отвечу завтра с утра, уже ухожу =)
1
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
22.06.2013, 00:54  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Да никак, кому-то я помогу, кто-то мне поможет =)

А можно скриншотик интерфейса(интересует как вы добавляете строки в грид) я бы тогда смог более подробно объяснить, по нажатии на отмену мы просто не должны делать запрос на добавление записи, все просто =) Отвечу завтра с утра, уже ухожу =)
Простите, срочная командировка!
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
22.06.2013, 06:38
вы вводите данные непосредственно в самом гриде да? или в текстбоксе?
1
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
22.06.2013, 21:36  [ТС]
В текст Боксе ввожу, нажимаю Enter и запись добавляется в Грид
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
23.06.2013, 06:59
Тогда не надо ничего делать по кнопке отмена и все=) после того как ввели в текст бокс, нажимаем кнопку добавить, по нажатию этой кнопки проверяем валидность введенных данных и добавляем запись в базу данных, обновляем грид(перезаполняем его), если станет долго работать можно будет потом оптимизировать, я вам сейчас самый быстрый и легкий способ говорю)

Если нажали отмену, просто очищаем текстбокс или что вам надо делаете и все, запись в БД не добавляем, грид соответственно тоже не обновляем, все просто =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.06.2013, 06:59
Помогаю со студенческими работами здесь

cmd.ExecuteNonQuery();
Здравствуйте. Кто разбирается, помогите пожалуйста. нажимаю на кнопку изменить, выходит эта ошибка OleDbException was unhandled. как...

Ошибка в cmd.ExecuteNonQuery()
Здравствуйте, я написал следующий код для добавления информации в локальную БД: int status = 0; if...

Foreach + cmd.ExecuteNonQuery()
Господа, помогите :scratch: Есть массив, форичем проверяю значение элемента массива и при true выполняется определенный...

Почему cmd ругается на %?
Rem You have to pass path triples: action arg0 arg1. Rem Action could be one of the following values: copy, move, delete. Rem Example:...

Почему cmd при запуска данного .bat файла ругается на %?
Почему cmd при запуске данного .bat файла ругается на %? Rem This .bat file allows you to copy/transfer files from one folder to...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru