Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,793
1
MySQL

Ошибка: System.ArgumentOutOfRangeException При сохранении введенных данных из DataGridView в MySQL

02.11.2020, 01:16. Показов 3449. Ответов 88
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
System.ArgumentOutOfRangeException: "Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции. Имя параметра: index"

Ошибка в коде в 42 строке

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
51
52
53
54
55
56
57
58
59
60
61
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Dapper;
using MySql.Data.MySqlClient;
 
namespace IT_A_stroy
{
    public partial class Form3 : Form
    {
        readonly string connectionString = "server=localhost;user=root;database=a_stroy;password=q1w2e3r4t5y6u7i8o9p0;";
        public Form3()
        {
            InitializeComponent();
        }
 
        private void Form3_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "a_stroyDataSet.customer". При необходимости она может быть перемещена или удалена.
            this.customerTableAdapter.Fill(this.a_stroyDataSet.customer);
        }
        private void InsertFromDataGridView_Load(object sender, EventArgs e)
        {
            dataGridView1.AutoGenerateColumns = false;
        }
        private void button1_Click_1(object sender, EventArgs e)
        {
            // объект для установления соединения с БД
            MySqlConnection connection = new MySqlConnection(connectionString);
            // открываем соединение
            connection.Open();
            // запросы
            // запрос вставки данных
            string query = "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 ('" + comboBox1.SelectedItem + "','" + textBox1.Text + "','" + dateTimePicker1.Value.Date + "','" + dateTimePicker2.Value.Date + "','" + textBox2.Text + "','" + comboBox2.SelectedItem + "','" + comboBox3.SelectedItem + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox7.Text + "')";
 
            string query1 = "INSERT INTO Words_object (Name_words, Size_words, Unit_of_size) VALUES ('" + dataGridView1.Columns[2] + "','" + dataGridView1.Columns[3] + "','" + dataGridView1.Columns[4] + "')";
 
            // объект для выполнения SQL-запроса
            MySqlCommand command = new MySqlCommand(query, connection);
            MySqlCommand command1 = new MySqlCommand(query1, connection);
            // выполняем запрос
            command.ExecuteNonQuery();
            command1.ExecuteNonQuery();
 
            // закрываем подключение к БД
            connection.Close();
            Close();
        }
 
        private void button2_Click_1(object sender, EventArgs e)
        {
            Close();
        }
    }
}
query - сохраняется хорошо (если нет блока query1).

query и query1 - это отдельные блоки для добавления данных в разные таблицы.
Миниатюры
Ошибка: System.ArgumentOutOfRangeException При сохранении введенных данных из DataGridView в MySQL  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2020, 01:16
Ответы с готовыми решениями:

System.ArgumentOutOfRangeException: Индекс за пределами диапазона (передача данных в DataGridView)
Здравствуйте! В целях практики разбираю задачу по взаимодействию форм - передаче данных из одной...

System.ArgumentOutOfRangeException в DataGridView
приветствую форумчане. у меня есть проблема с отображением datagridview где rowCount меняется в...

Преобразование типа Date в Datagridview при сохранении в базе MYSQL
Друзья подскажите пожалуйста как преобразовать дату при сохранении из Datagrid...

Ошибка при закрытии формы "System.ArgumentOutOfRangeException" в mscorlib.dll
Гайз, нужна помощь. Гугл не помог, вся надежда на вас. Офк есть подозрения что проблема настолько...

88
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
02.11.2020, 06:59 2
Индексация с нуля начинается
0
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,793
02.11.2020, 10:06  [ТС] 3
Toros1992, а как должно быть правильно? Я подобные ошибки находил...несильно понял ...их смысл
0
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
02.11.2020, 10:39 4
xamelione25, ну у вас массив колонок состоит из 4-х элементов. То есть максимальный индекс в массиве - 3.
А вы пытаетесь получить доступ по индексу 4.
Помимо этого вам же наверное надо из ячеек доставать данные , а не из колонок?
0
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,793
02.11.2020, 11:00  [ТС] 5
Toros1992, ну, да...

я почему поставил индексы со второго ....тк у меня первая колонка в datagridview - это автоматическая нумерация (колонка которая не заполняется).....я думал это нумерация колонок))))

хотя это еще один вопрос как сделать автоматическую нумерацию строк в первой колонке

можете показать кодом как это сделать???

единственное условие чтобы в mysql передавался дополнительно одинаковый id-ишник по всем работам которые относятся в одному объекту
0
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
02.11.2020, 11:34 6
Цитата Сообщение от xamelione25 Посмотреть сообщение
хотя это еще один вопрос как сделать автоматическую нумерацию строк в первой колонке
Надо делать ее не в коде, а в запросе. Надо явно из БД выбирать данные, которые нужны, строить по данным модель и привязывать эту модель к DataGridView
0
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,793
02.11.2020, 11:42  [ТС] 7
Toros1992, если бы я еще кодить так мог))))
0
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
02.11.2020, 11:45 8
xamelione25, Как так? запросить данные из БД и засунуть их в List<MyClass> ? Это проблема? у вас простор в выборе инструментов: От SqlConnection до Dapper или Linq2Db
1
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,793
02.11.2020, 12:55  [ТС] 9
Toros1992, если бы некий шаблон был для аналогии.... "я на слух так плохо воспринимаю"...
0
Эксперт .NET
12108 / 8418 / 1291
Регистрация: 21.01.2016
Сообщений: 31,759
02.11.2020, 14:03 10
xamelione25, таким шаблоном могут выступать примеры использования озвученных выше вещей. Вот, к примеру, Dapper.NET и он же чуть более развёрнуто на метаните.
0
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,793
02.11.2020, 22:30  [ТС] 11
Toros1992, а почему вылетает здесь ошибка ???
MySql.Data.MySqlClient.MySqlException: "Incorrect integer value: 'System.Data.DataRowView' for column 'id_customer' at row 1"

на 48 строку кода?

в чем причина этой ошибки?

Добавлено через 2 минуты
Toros1992, я пробовал удалять то на что указывает ошибка.....

ему не нравятся combobox-ы и dateTimePicker-ы... он на них выдает эти ошибки
0
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
02.11.2020, 22:52 12
Приведите актуальный код с указанием нумерации строк как они на форуме пронумерованы и полным текстом ошибки
0
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,793
02.11.2020, 23:13  [ТС] 13
Toros1992,
Цитата Сообщение от Toros1992 Посмотреть сообщение
Приведите актуальный код с указанием нумерации строк как они на форуме пронумерованы и полным текстом ошибки
Кликните здесь для просмотра всего текста
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
51
52
53
54
55
56
57
58
59
60
61
62
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Dapper;
using MySql.Data.MySqlClient;
 
namespace IT_A_stroy
{
    public partial class Form3 : Form
    {
        readonly string connectionString = "server=localhost;user=root;database=a_stroy;password=q1w2e3r4t5y6u7i8o9p0;";
        public Form3()
        {
            InitializeComponent();
        }
 
        private void Form3_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "a_stroyDataSet.customer". При необходимости она может быть перемещена или удалена.
            this.customerTableAdapter.Fill(this.a_stroyDataSet.customer);
        }
        private void InsertFromDataGridView_Load(object sender, EventArgs e)
        {
            dataGridView1.AutoGenerateColumns = false;
        }
        private void button1_Click_1(object sender, EventArgs e)
        {
            // объект для установления соединения с БД
            MySqlConnection connection = new MySqlConnection(connectionString);
            // открываем соединение
            connection.Open();
            // запросы
            // запрос вставки данных
            string query = "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 ('" + comboBox1.SelectedItem + "','" + textBox1.Text + "','" + dateTimePicker1.Value.Date + "','" + dateTimePicker2.Value.Date + "','" + textBox2.Text + "','" + comboBox2.SelectedItem + "','" + comboBox3.SelectedItem + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox7.Text + "')";
 
           // string query1 = "INSERT INTO Words_object (Name_words, Size_words, Unit_of_size) VALUES ('" + dataGridView1.Columns[1] + "','" + dataGridView1.Columns[2] + "','" + dataGridView1.Columns[3] + "')";
 
            // объект для выполнения SQL-запроса
            MySqlCommand command = new MySqlCommand(query, connection);
           // MySqlCommand command1 = new MySqlCommand(query1, connection);
            // выполняем запрос
            command.ExecuteNonQuery();
            //command1.ExecuteNonQuery();
 
            // закрываем подключение к БД
            connection.Close();
            Close();
        }
 
        private void button2_Click_1(object sender, EventArgs e)
        {
            Close();
        }
 
    }
}


честно не знаю что произошло --- но я перезапустил проект и пересоздал соединение к БД... и у меня ошибка появилась (до этого её не было)

System.ArgumentException: "Привязка к свойству или столбцу id_customer для DataSource невозможна.
Имя параметра: dataMember"
а до этого ошибка была на 48 строке этого кода
Миниатюры
Ошибка: System.ArgumentOutOfRangeException При сохранении введенных данных из DataGridView в MySQL   Ошибка: System.ArgumentOutOfRangeException При сохранении введенных данных из DataGridView в MySQL   Ошибка: System.ArgumentOutOfRangeException При сохранении введенных данных из DataGridView в MySQL  

0
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,793
02.11.2020, 23:41  [ТС] 14
Toros1992, вот я щас подправил.....вернулся в предыдущей ошибке...

Кликните здесь для просмотра всего текста
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
51
52
53
54
55
56
57
58
59
60
61
62
63
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Dapper;
using MySql.Data.MySqlClient;
 
namespace IT_A_stroy
{
    public partial class Form3 : Form
    {
        readonly string connectionString = "server=localhost;user=root;database=a_stroy;password=q1w2e3r4t5y6u7i8o9p0;";
        public Form3()
        {
            InitializeComponent();
        }
 
        private void InsertFromDataGridView_Load(object sender, EventArgs e)
        {
            dataGridView1.AutoGenerateColumns = false;
        }
        private void button1_Click_1(object sender, EventArgs e)
        {
            // объект для установления соединения с БД
            MySqlConnection connection = new MySqlConnection(connectionString);
            // открываем соединение
            connection.Open();
            // запросы
            // запрос вставки данных
            string query = "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 ('" + comboBox1.SelectedItem + "','" + textBox1.Text + "','" + dateTimePicker1.Value.Date + "','" + dateTimePicker2.Value.Date + "','" + textBox2.Text + "','" + comboBox2.SelectedItem + "','" + comboBox3.SelectedItem + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox7.Text + "')";
 
           // string query1 = "INSERT INTO Words_object (Name_words, Size_words, Unit_of_size) VALUES ('" + dataGridView1.Columns[1] + "','" + dataGridView1.Columns[2] + "','" + dataGridView1.Columns[3] + "')";
 
            // объект для выполнения SQL-запроса
            MySqlCommand command = new MySqlCommand(query, connection);
           // MySqlCommand command1 = new MySqlCommand(query1, connection);
            // выполняем запрос
            command.ExecuteNonQuery();
            //command1.ExecuteNonQuery();
 
            // закрываем подключение к БД
            connection.Close();
            Close();
        }
 
        private void button2_Click_1(object sender, EventArgs e)
        {
            Close();
        }
 
        private void Form3_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "a_stroyDataSet.customer". При необходимости она может быть перемещена или удалена.
            this.customerTableAdapter.Fill(this.a_stroyDataSet.customer);
 
        }
    }
}


нечаянно сбил соединение с dataSet
Миниатюры
Ошибка: System.ArgumentOutOfRangeException При сохранении введенных данных из DataGridView в MySQL  
0
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,793
02.11.2020, 23:55  [ТС] 15
Toros1992, я уже думаю ...может быть у меня у меня причина в настройках comboBox - не знаю...
0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,363
03.11.2020, 00:49 16
Чтобы исправить ошибку в строке 11848 и строке 237, нужно вместо строки 690 вставить строку 6409
0
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,793
03.11.2020, 00:51  [ТС] 17
MsGuns, хватит ёрнтчать...я нашел ошибку
Там не comboBox1.SelectedItem должно было быть а comboBox1.SelectedValue
0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,363
03.11.2020, 01:00 18
Цитата Сообщение от xamelione25 Посмотреть сообщение
хватит ёрнтчать

Не по теме:

Ёрничают тут те, кто выкладывают простынь говнокода и спрашивают почему ошибка в строке N, не потрудившись внимательно вдуматься в сообщение компилятора ?

0
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,793
03.11.2020, 01:08  [ТС] 19
MsGuns,

Не по теме:

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

0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,363
03.11.2020, 02:26 20
https://www.cyberforum.ru/announcement.php?a=3

Это правила форума. И там ничего не сказано про языковые привилегии. Если У Вас проблемы с русским, Вы можете свободно изъясняться на английском - большинство на этом форуме Вас поймет.
Опять же можно настроить VS на сообщения на английском. Без проблем.

Добавлено через 1 минуту
These are the rules of the forum. And it doesn't say anything about language privileges. If you have problems with Russian, you can freely express yourself in English - the majority on this forum will understand you.
Again, you can set VS to messages in English. No problem.
0
03.11.2020, 02:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.11.2020, 02:26
Помогаю со студенческими работами здесь

Ошибка при сохранении в MySql
Есть таблица dtfiles в dataset-e; Она вот так объявляется: DataColumn...

Ошибка при сохранении изменений в DataGridView
На главной форме проекта, которая загружается первой, имеется подключение к базе данных Access,...

Ошибка при сохранении изменений в DataGridView
Доброго времени суток! Ребята выручайте! При нажатии на кнопку должны сохраняться изменения, но...

DataGridView Ошибка при сохранении внесенных изменений
Здравствуйте! Пытаюсь сделать сохранение внесенных изменений и получаю вот такую ошибку...

Ошибка при сохранении dataGridView в Excel файл.
Хочу сохранить датугридвью в эксель файл. Выдает следующую ошибку. Может я забыл подгрузить...

Парсер файла. Ошибка System.ArgumentOutOfRangeException
Не понимаю, как исправить ошибку. Подскажите, пожалуйста Необработанное исключение типа...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru