powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
24 сообщений из 24, страница 1 из 1
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021522
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема с добавлением именно нескольких строк вводимых из datagridview (если добавляется одна - то все нормально). Вылетает ошибка что параметр Name_works уже существует.

Код: 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.
30.
31.
        private void button1_Click(object sender, EventArgs e)
        {
            MySqlConnection connection = new MySqlConnection(connectionString);// объект для установления соединения с БД
            connection.Open();// открываем соединение
            // запросы вставки данных в Object
            mySqlCommand = new MySqlCommand("sp_createObject", connection);
            mySqlCommand.CommandType = CommandType.StoredProcedure;
            mySqlCommand.Parameters.Add(new MySqlParameter("@id_customer", comboBox1.SelectedValue.ToString()) { DbType = DbType.Int32 });
            mySqlCommand.Parameters.Add(new MySqlParameter("@Name_object", tx1.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Start_construction", dt1.Value));
            mySqlCommand.Parameters.Add(new MySqlParameter("@End_construction", dt2.Value));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Number_contract",tx2.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Type_of_object", cb2.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Type_of_construction", cb3.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Length", tx3.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Width", tx4.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Heigth", tx5.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Name_general_work", tx6.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Name_proect_organization", tx7.Text));
            
            for (int i = 0; i < dataGridView1.RowCount; i++)
            {
                var cells = dataGridView1.Rows[i].Cells;
                mySqlCommand.Parameters.Add(new MySqlParameter("@Name_works", cells[0].Value));
                mySqlCommand.Parameters.Add(new MySqlParameter("@Size_works", cells[1].Value));
                mySqlCommand.Parameters.Add(new MySqlParameter("@Unit_of_size", cells[2].Value));
            }
            mySqlCommand.ExecuteScalar();
            connection.Close();
            Close();
        }




MYSQL
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_createObject`(in id_customer integer, in Name_object VarChar(255), in Start_construction Date, in End_construction Date, in Number_contract VarChar(255), in Type_of_object VarChar(255), in Type_of_construction VarChar(255), in Length Float, in Width Float, in Heigth Float, in Name_general_work VarChar(255), in Name_proect_organization VarChar(255), in Name_works VarChar(255), in Size_works Float, in Unit_of_size VarChar(100))
Begin
SET FOREIGN_KEY_CHECKS = 0;
INSERT INTO Object (id_customer, Name_object, Start_construction, End_construction, Number_contract, Type_of_object, Type_of_construction, Length, Width, Heigth, Name_general_work, Name_proect_organization)
VALUES (id_customer, Name_object, Start_construction, End_construction, Number_contract, Type_of_object, Type_of_construction, Length, Width, Heigth, Name_general_work, Name_proect_organization);
 
INSERT INTO Words_object (id_Object, Name_works, Size_works, Unit_of_size)
VALUES (LAST_INSERT_ID(), Name_works, Size_works, Unit_of_size);
SET FOREIGN_KEY_CHECKS = 1;
End
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021535
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xamelione25
Вылетает ошибка что параметр Name_works уже существует.
ну так неудивительно, если несколько раз пытаться добавлять параметр с одним и тем же именем
xamelione25
Код: c#
1.
mySqlCommand.Parameters.Add(new MySqlParameter("@Name_works", cells[0].Value));

...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021536
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,


немного не понял

так у меня же цикл ... мне же нужно чтобы он все построчно и добавил все параметры по порядку....
авторfor (int i = 0; i < dataGridView1.RowCount; i++)

а как иначе??

и что сделать нужно???
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021556
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xamelione25
так у меня же цикл
Ну так цикл и добавляет параметры в коллекцию mySqlCommand.Parameters. Ну и на второй итерации закономерно возникает ошибка, так как параметр с таким именем в коллекции уже есть.


xamelione25
а как иначе??
и что сделать нужно???
я думаю, нужно озвучить, что именно ты хочешь сделать. Потому что проблема-то описана и понятна, а что именно ты хочешь сделать, совсем не ясно.

xamelione25
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
тут вообще про добавление в ячейки, и какое отношение к этому имеет вызов ХП лично мне не ясно. Инкремент тут еще какой-то...
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021558
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

я тему и содержимое скопировал с кибер форума - и поспешил...
https://www.cyberforum.ru/windows-forms/thread2735285.html]
я не то что надо в названии в теме прописал....(то что нужно см.в содержимом)

у меня изначально проблема была с тем что я не мог добавить айдишник добавляемого объекта (object) в таблицу с работами объекта (works_object) с текущей сессии. То есть айдишник добавляется ко всем работам, и только к тем которые добавляются совместно с самим объектом в общей сессии (в одном окне).

потом я добавил в хранимую процедуру LAST_INSERT_ID() и проблема с айдишниками решилась....

НО добавляться в таблицу работ стала только одна строка...а уже 2 и более - нет!
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021560
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну так у тебя и процедура добавляет одну строку.
Сначала процедуру напиши, которая будет несколько строк добавлять.
Кури доку по MySQL, как передать в процедуру табличный параметр.
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021562
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

да я ищу ищу - не могу хотя бы шаблонный кусок кода найти...

то что у меня получается найти у меня у самого тоже самое сейчас
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021564
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            for (int i = 0; i < dataGridView1.RowCount; i++)
            {
                
                var cells = dataGridView1.Rows[i].Cells;
                mySqlCommand.Parameters.Add(new MySqlParameter("@id_Object", id));
                mySqlCommand.Parameters.Add(new MySqlParameter("@Name_works", cells["Name_works"].Value));
                mySqlCommand.Parameters.Add(new MySqlParameter("@Size_works", cells["Size_works"].Value));
                mySqlCommand.Parameters.Add(new MySqlParameter("@Unit_of_size", cells["Unit_of_size"].Value));
                //mySqlCommand.ExecuteScalar();
            }



так разве этот цикл не обеспечивает построчного добавления???
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021567
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавление чего?
Параметр ХП - это переменная.
Как ты хочешь засунуть в ОДНУ переменную НЕСКОЛЬКО значений одновременно?
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021568
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xamelione25,

Тебе надо научиться DataSet-ы использовать. Сценарий явно для них. И не будет этих ужасных простыней с ручным вызовом DbCommand в цикле на каждый чих.
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021569
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

да я как бы понимаю.... а как сделать то нужно? просто я конкретного ничего не нахожу((
я имею ввиду пример-шаблон какой-нибудь
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021575
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Как ты хочешь засунуть в ОДНУ переменную НЕСКОЛЬКО значений одновременно?

Через запятую, например.
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021582
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat,Shocker.Pro

народ вопрос не по теме возможно...
Я знаю что последний id вызывается конструкцией LAST_INSERT_ID(). Подскажите а как эту конструкцию применить в коде C# (не в MySQL)??? Как её в коде прописать?
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021586
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xamelione25
fkthat,Shocker.Pro

народ вопрос не по теме возможно...
Я знаю что последний id вызывается конструкцией LAST_INSERT_ID(). Подскажите а как эту конструкцию применить в коде C# (не в MySQL)??? Как её в коде прописать?
ты же уже писал код для передачи LAST_INSERT_ID на клиента 22233291 , в чем проблема?
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021587
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Shocker.Pro
ты же уже писал код для передачи LAST_INSERT_ID на клиента


это в хранимой процедуре....а я спрашиваю как этот параметр (или другой аналогичный) использовать в самом коде C#.

То есть --- как параметр вызова последнего id прописать/использовать в коде

Я понимаю что у mysql - свой язык, у C# - свой, но все-равно ...
по функциональности можно же как-то аналогичным образом вызвать последний айдишник только в самом коде а не в хранимой процедуре?
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021589
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле "как"? я вопроса не понимаю.
Ты положил значение LAST_INSERT_ID в свой output параметр @id, после выполнения процедуры он у тебя есть на клиенте - берешь и используешь в последующих запросах.
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021592
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в том, что ты ищешь какие-то готовые примеры под свою задачу, вместо того, чтобы просто взять и прочесть учебник и разобраться как работает ADO.NET, которая древняя, как останки мамонта и по которой учебников миллион, и писать свой код не на основе каких-то левых примеров, а на основе собственных систематических знаний.
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021593
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

вот смотри
у меня есть такой сейчас код

Код: 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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
        private void button1_Click(object sender, EventArgs e)
        {
            MySqlConnection connection = new MySqlConnection(connectionString);// объект для установления соединения с БД
            connection.Open();// открываем соединение
            // запросы вставки данных в Object
            mySqlCommand = new MySqlCommand("sp_createObject", connection);
            mySqlCommand.CommandType = CommandType.StoredProcedure;
            mySqlCommand.Parameters.Add(new MySqlParameter("@id_customer", comboBox1.SelectedValue.ToString()) { DbType = DbType.Int32 });
            mySqlCommand.Parameters.Add(new MySqlParameter("@Name_object", tx1.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Start_construction", dt1.Value));
            mySqlCommand.Parameters.Add(new MySqlParameter("@End_construction", dt2.Value));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Number_contract",tx2.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Type_of_object", cb2.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Type_of_construction", cb3.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Length", tx3.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Width", tx4.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Heigth", tx5.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Name_general_work", tx6.Text));
            mySqlCommand.Parameters.Add(new MySqlParameter("@Name_proect_organization", tx7.Text));
            var id = mySqlCommand.ExecuteScalar();
            // запросы вставки данных в works_object
            //mySqlCommand = new MySqlCommand("sp_CreateUser", connection);
            //mySqlCommand.CommandType = CommandType.StoredProcedure;
            //for (int i = 0; i < dataGridView1.RowCount; i++)
            //{
                
            //    var cells = dataGridView1.Rows[i].Cells;
            //    mySqlCommand.Parameters.Add(new MySqlParameter("@id_Object", id));
            //    mySqlCommand.Parameters.Add(new MySqlParameter("@Name_works", cells["Name_works"].Value));
            //    mySqlCommand.Parameters.Add(new MySqlParameter("@Size_works", cells["Size_works"].Value));
            //    mySqlCommand.Parameters.Add(new MySqlParameter("@Unit_of_size", cells["Unit_of_size"].Value));

            //    //mySqlCommand.ExecuteScalar();
            //}
            for (int i = 0; i < dataGridView1.RowCount; i++)
            {

                var cells = dataGridView1.Rows[i].Cells;
                mySqlCommand.Parameters.AddWithValue("@id_Object", id);
                mySqlCommand.Parameters.AddWithValue("@Name_works", cells["Name_works"].Value);
                mySqlCommand.Parameters.AddWithValue("@Size_works", cells["Size_works"].Value);
                mySqlCommand.Parameters.AddWithValue("@Unit_of_size", cells["Unit_of_size"].Value);
                mySqlCommand.ExecuteNonQuery();
                //mySqlCommand.ExecuteScalar();
            }

            mySqlCommand.ExecuteScalar();
            connection.Close();
            Close();
        }



здесь в строке
Код: c#
1.
var id = mySqlCommand.ExecuteScalar(); 


можно как-то взять айдишник из ХП LAST_INSERT_ID
чтобы её потом присваивать ячейкам строк здесь в цикле

Код: c#
1.
mySqlCommand.Parameters.AddWithValue("@id_Object", id);
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021594
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Shocker.Pro
Проблема в том, что ты ищешь какие-то готовые примеры под свою задачу,

мне без примеров сложно...
прочитать теорию это одно
а когда есть аналогия это другое.....
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021595
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитай уже учебник
ну вот это хотя бы
https://metanit.com/sharp/adonet/2.12.php
тут для mssql, но принцип тот же


xamelione25
у меня есть такой сейчас код
Почему после вызова первой процедуры, ты продолжаешь пихать параметры в ту же коллекцию?
mySqlCommand.Parameters
Естественно у тебя ошибки будут
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021596
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xamelione25
а когда есть аналогия это другое.....
ну когда ты нашел аналогию, что ты начинаешь делать? использовать метод тыка.
Нашел пример, запустил у себя, ок - разберись, как он работает, посмотри учебник, где описаны именно эти классы и методы. По примерам учиться абсолютно бессмысленно, если ты не пытаешься разобраться, как они работают. А судя по тому, что ты вытворяешь с коррекцией параметров - ты не пытаешься.
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021597
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
Почему после вызова первой процедуры, ты продолжаешь пихать параметры в ту же коллекцию?
mySqlCommand.Parameters

ну у меня сначала были две разные хранимые процедуры
каждая должна была добавить свои данные в свою таблицу....
но у меня проблема возникла с вызовом последнего айдишника LAST_INSERT_ID ...
я не нашел как из другой ХП его id вызвать.... ...
поэтому я эти две ХП и объединил в одну.
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021601
xamelione25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

у меня толком то. все проблемы решились...единственное



есть хранимая процедура по созданию объекта
Код: plsql
1.
2.
3.
4.
5.
6.
7.
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_createObject`(in id_customer integer, in Name_object VarChar(255), in Start_construction Date, in End_construction Date, in Number_contract VarChar(255), in Type_of_object VarChar(255), in Type_of_construction VarChar(255), in Length Float, in Width Float, in Heigth Float, in Name_general_work VarChar(255), in Name_proect_organization VarChar(255))
Begin
SET FOREIGN_KEY_CHECKS = 0;
INSERT INTO Object (id_customer, Name_object, Start_construction, End_construction, Number_contract, Type_of_object, Type_of_construction, Length, Width, Heigth, Name_general_work, Name_proect_organization)
VALUES (id_customer, Name_object, Start_construction, End_construction, Number_contract, Type_of_object, Type_of_construction, Length, Width, Heigth, Name_general_work, Name_proect_organization);
SET FOREIGN_KEY_CHECKS = 1;
End



есть хранимая процедура по созданию работ для этого объекта
Код: plsql
1.
2.
3.
4.
5.
6.
7.
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_CreateUser`(in id_Object integer, in Name_works VarChar(255), in Size_works Float, in Unit_of_size VarChar(100))
Begin
SET FOREIGN_KEY_CHECKS = 0;
INSERT INTO Words_object (id_Object, Name_works, Size_works, Unit_of_size)
VALUES (LAST_INSERT_ID(), Name_works, Size_works, Unit_of_size);
SET FOREIGN_KEY_CHECKS = 1;
End



вопрос: как мне в процедуре works_object выдернуть LAST_INSERT_ID() ... и только так чтобы он работал только на изъятие id именно из таблицы object. чтобы он этот id брал только из другой фактических ХП??
...
Рейтинг: 0 / 0
Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
    #40021639
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xamelione25
вопрос: как мне в процедуре works_object выдернуть LAST_INSERT_ID() ... и только так чтобы он работал только на изъятие id именно из таблицы object. чтобы он этот id брал только из другой фактических ХП??
в такой формулировке никак.

Ты должен вернуть этот id из первой процедуры в свой C#-код, а потом передать его как параметр во вторую процедуру
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как добавить во все ячейки столбца datagridview одинаковое значение auto_increment из друг
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]