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

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

09.06.2013, 15:30. Показов 4417. Ответов 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
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
09.06.2013, 16:00
вы бы посмотрели что у вас в dataGridView1.Rows, и всё стало понятно
1
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
09.06.2013, 17:03  [ТС]
Цитата Сообщение от Монфрид Посмотреть сообщение
вы бы посмотрели что у вас в dataGridView1.Rows, и всё стало понятно

Извините, я не совсем понял...
Что именно сделать нужно?
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
10.06.2013, 06:35

Не по теме:

Вот она, "строгая типизация" C#. Можно в параметр хранимой процедуру хоть форму целиком передать, а компилятор даже предупреждения не выдаст.


Более чем уверен, что Exception, который возникает при выполнении метода ExecuteNonQuery, говорит о том, что он не может преобразовать параметр @trek к типу NVARCHAR. Это происходит из-за того, что вы в качестве параметра @trek передаете не строку, а DataGridViewRowCollection. Собственно, об этом вам и сказал Монфрид, только не напрямую, а намеком.
1
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
10.06.2013, 16:30  [ТС]
Цитата Сообщение от kodv Посмотреть сообщение

Не по теме:

Вот она, "строгая типизация" C#. Можно в параметр хранимой процедуру хоть форму целиком передать, а компилятор даже предупреждения не выдаст.


Более чем уверен, что Exception, который возникает при выполнении метода ExecuteNonQuery, говорит о том, что он не может преобразовать параметр @trek к типу NVARCHAR. Это происходит из-за того, что вы в качестве параметра @trek передаете не строку, а DataGridViewRowCollection. Собственно, об этом вам и сказал Монфрид, только не напрямую, а намеком.
Спасибо) Теперь дошло до жирафа)
Но теперь возникает другой вопрос: как в этот параметр @treck передать все значения из столбца treck (он под индексом 1)
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
10.06.2013, 16:36
Вы подумайте чуть чуть, как вы в хранимую процедуру, в один параметр запихнете сразу же несколько значений? это для каждого значения отдельно вызывать хранимую процедуру тогда, по другому никак =) Ну конечно можно извратиться через программирования на sql, но не стоит, что хранимка делать должна?
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
10.06.2013, 17:05
Цитата Сообщение от nubiara Посмотреть сообщение
как в этот параметр @treck передать все значения из столбца treck
Плохая мысль. 23Alex24 уже ответил, как правильно делать надо. Дополню. Пришло время Вам познакомиться с DataAdapter'ом:
- Использование DataAdapter'а, а заодно еще и DataReader'а.
- Обновление источников данных с помощью DataAdapter'а.
1
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
10.06.2013, 17:22  [ТС]
Цитата Сообщение от kodv Посмотреть сообщение
Плохая мысль. 23Alex24 уже ответил, как правильно делать надо. Дополню. Пришло время Вам познакомиться с DataAdapter'ом:
- Использование DataAdapter'а, а заодно еще и DataReader'а.
- Обновление источников данных с помощью DataAdapter'а.
Опять же мои благодарности)
Т.е хранимую процедуру отбрасываю, так?
А можете показать, как реализовать с помощью этих методов, поставленную задачу, по нажатию кнопки?)
Задергал я уже Вас, наверное..
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
10.06.2013, 17:30
Вы бы прочитали сначала инфомрацию по ссылкам. DataAdapter содержит в себе четыре команды (на каждое действие по команде) и коннекшн. INSERT-команда у DataAdapter - это будет ваша ХП. Останется только скормить DataAdapter'у вашу DataTable, для того, чтобы он вставил новые записи в БД. В процессе изучения материала вы найдете массу примеров. Поэтому не поленитесь, почитайте. Нет смысла писать приложения БД, используя ADO.NET, если нет понимания механизма этого ADO.NET.
1
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
10.06.2013, 23:25  [ТС]
Цитата Сообщение от kodv Посмотреть сообщение
Вы бы прочитали сначала инфомрацию по ссылкам. DataAdapter содержит в себе четыре команды (на каждое действие по команде) и коннекшн. INSERT-команда у DataAdapter - это будет ваша ХП. Останется только скормить DataAdapter'у вашу DataTable, для того, чтобы он вставил новые записи в БД. В процессе изучения материала вы найдете массу примеров. Поэтому не поленитесь, почитайте. Нет смысла писать приложения БД, используя ADO.NET, если нет понимания механизма этого ADO.NET.
Спасибо, действительно, стоило прочитать, вначале)
уже разобрался)
Простите, просто уже просто в отчаянии был!)

Добавлено через 3 часа 38 минут
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Вы подумайте чуть чуть, как вы в хранимую процедуру, в один параметр запихнете сразу же несколько значений? это для каждого значения отдельно вызывать хранимую процедуру тогда, по другому никак =) Ну конечно можно извратиться через программирования на sql, но не стоит, что хранимка делать должна?
Не сразу заметил)
Хранимка должна записывать в БД, в идеале, каждое значение ячейки из Колонки treck, но достаточно необычным образом, т.е в таблице должна создаваться каждый раз новая строка содержащие значение из textBox'а (оно всегда одинаковым будет) и каждое значение ячейки из Колонки treck...как то так...

Добавлено через 1 минуту
Цитата Сообщение от kodv Посмотреть сообщение
Вы бы прочитали сначала инфомрацию по ссылкам. DataAdapter содержит в себе четыре команды (на каждое действие по команде) и коннекшн. INSERT-команда у DataAdapter - это будет ваша ХП. Останется только скормить DataAdapter'у вашу DataTable, для того, чтобы он вставил новые записи в БД. В процессе изучения материала вы найдете массу примеров. Поэтому не поленитесь, почитайте. Нет смысла писать приложения БД, используя ADO.NET, если нет понимания механизма этого ADO.NET.
Я все же видно совсем тупой, раз не понимаю, как вызвать это действие по нажатию button1(((((

Добавлено через 30 минут
А Вообще если кто поможет написать код для кнопки, то я ничего не пожалею...
уже просто голова кругом!
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
11.06.2013, 06:29
По итогу все должно закончится такой строкой:
C#
1
myDataAdapter.Update(myDataTable); // myDataTable - это DataTable, которая привязана к DataGridView
Пробуйте писать. Если не получится, то тогда уж кидайте нароботки сюда с комментариями, что не получается. Исправить ошибку в готовом коде гораздо проще, чем писать этот код целиком не зная ни предметной области, ни архитектуры приложения.
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
11.06.2013, 08:11
А вообще возникает вопрос нужна ли вообще эта хранимка может имеет смысл просто делать insert, а так вообще для каждой новой записи надо вызывать отдельно, либо как вам советовали через адаптер, есть еще такая штука как LINQ to SQL, если будет время почитайте про нее тоже=)
1
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
11.06.2013, 21:13  [ТС]
C#
1
2
3
4
5
private void button1_Click(object sender, EventArgs e)
        {
            SkladvpekineDataSetTableAdapters.QueriesTableAdapter tableAdapter = new SkladvpekineDataSetTableAdapters.QueriesTableAdapter();
            int rowsAffected = tableAdapter.InsPrib( А ВОТ ТУТ СТУПОР )
         }
Ведь мне из DataGirdView нужно перенести значения столбца treck нажатием кнопки
(Уже просто стыдно за свою тупость)
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
13.06.2013, 06:09
InsPrib это ваш метод какой-то?
0
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
13.06.2013, 16:41  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
InsPrib это ваш метод какой-то?
Это хранимка моя
Она из выпадающего списка мне выскочила...
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
13.06.2013, 16:56
Ну, возможно вам туда надо передать набор параметров, в этом ваш ступор был?)
0
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
13.06.2013, 17:58  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Ну, возможно вам туда надо передать набор параметров, в этом ваш ступор был?)
Да))))))))

Но значения из DataGird View
из 1 колонки))
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
14.06.2013, 08:16
ну у грида должна быть коллекция columns или rows, там через индексы в общем можно к ячейкам получить доступ =)
1
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 21
15.06.2013, 00:52  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
ну у грида должна быть коллекция columns или rows, там через индексы в общем можно к ячейкам получить доступ =)
Пробовал))
нельзя получить значения всех ячеек....
Вот хоть убейся..
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
15.06.2013, 10:01
ну само собой там придется использовать цикл или что-то на подобие =) суть задачи скажите, чтобы лишний раз вас не тормошить и стало более менее понятно что надо сделать - хотя бы чуть чуть расскажите что пытаетесь сделать и для чего, возможно вы где-то подход не правильный выбрали
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.06.2013, 10:01
Помогаю со студенческими работами здесь

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...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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