Member 13396840 Ответов: 1

Как сохранить данные excel sheet1, sheet2, sheet3 в базе данных mysql im с помощью C#


Всем привет.

У меня есть лист excel, лист1, лист2 и лист3

Однако у меня есть datareader, который работает для чтения и загрузки файлов excel и листов в мой datagridview

Я хочу сохранить другой лист из другой таблицы в моей базе данных

Как это сделать? может ли кто-нибудь помочь мне сделать это?

Заранее спасибо

Что я уже пробовал:

private void btnSaved_Click(object sender, EventArgs e)
        {
            int qtr = 0;
            string att_qtr = "ATTENDANCE";

            MySqlConnection con = new MySqlConnection("Server = DESKTOP-9H7QBOH; Database = sti_spms; UID = root; Password = 1234;");
                try
                {
                    string query = "INSERT INTO tbl_secondsem_grades(STUDENT_NO, NAME, SUBJECT, SECTION, GRADE, INITIAL_GRADE, QTR)" + "Values(@STUDENT_NO, @NAME, @SUBJECT, @SECTION, @GRADE, @INITIAL_GRADE, @QTR)";
                    query +="INSERT INTO tbl_attendance(STUDENT_ID, NAME, SUBJECT, SECTION, TOTAL_ABSENCES)" + "Values(@STUDENT_ID, @NAME, @SUBJECT, @SECTION, @TOTAL_ABSENCES)";
                    MySqlCommand cmd = new MySqlCommand(query, con);
                    DataTable dt = new DataTable();
                    con.Open();
                    for (int i = 0; i < dataGridView1.Rows.Count -1; i++)
                    {
                       
                        if(quarter.Equals("1st QTR"))
                        {
                            qtr = 1;
                        }
                        else if(quarter.Equals("2nd QTR"))
                        {
                            qtr = 2;
                        }
                        else if(quarter.Equals("3rd QTR"))
                        {
                            qtr = 3;
                        }
                        else if(quarter.Equals("4th QTR"))
                        {
                            qtr = 4;
                        }
                        else if (quarter.Equals("ATTENDANCE"))
                        {
                            att_qtr = "ATTENDANCE";
                        }
                        else
                        {
                            MessageBox.Show("Error!");
                        }

                        //int num = Convert.ToInt32(dataGridView1.Rows[i].Cells["STUDENT NO"].Value.ToString());
                        cmd.Parameters.AddWithValue("@STUDENT_NO", dataGridView1.Rows[i].Cells["STUDENT NO"].Value.ToString());
                        cmd.Parameters.AddWithValue("@NAME", dataGridView1.Rows[i].Cells["NAME"].Value.ToString());
                        cmd.Parameters.AddWithValue("@SUBJECT", dataGridView1.Rows[i].Cells["SUBJECT"].Value.ToString());
                        cmd.Parameters.AddWithValue("@SECTION", dataGridView1.Rows[i].Cells["SECTION"].Value.ToString());
                        cmd.Parameters.AddWithValue("@INITIAL_GRADE", dataGridView1.Rows[i].Cells["INITIAL GRADE"].Value.ToString());
                        cmd.Parameters.AddWithValue("@GRADE", dataGridView1.Rows[i].Cells["QG"].Value.ToString());
                        cmd.Parameters.AddWithValue("@QTR", qtr);
                        cmd.Parameters.AddWithValue("@STUDENT_ID", dataGridView1.Rows[i].Cells["STUDENT ID"].Value.ToString());
                        cmd.Parameters.AddWithValue("@NAME", dataGridView1.Rows[i].Cells["NAME"].Value.ToString());
                        cmd.Parameters.AddWithValue("@SUBJECT", dataGridView1.Rows[i].Cells["SUBJECT"].Value.ToString());
                        cmd.Parameters.AddWithValue("@SECTION", dataGridView1.Rows[i].Cells["SECTION"].Value.ToString());
                        cmd.Parameters.AddWithValue("@Total_Absences", dataGridView1.Rows[i].Cells["Total_Absences"].Value.ToString());
                        cmd.ExecuteNonQuery();
                        cmd.Parameters.Clear();
                    }
                    
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Data  Sucessfully Saved!");
                }
    
        }

Richard MacCutchan

В чем проблема с вашим кодом?

Member 13396840

не могу сохранить данные из листа excel (посещаемость) в tbl_attendance, сэр, он говорит, что STUDENT_NO уже определен, поэтому я попытался изменить его на STUDENT_ID, но он говорит, что STUDENT_ID уже определен

Richard MacCutchan

Предположительно, ваше поле STUDENT_ID является автоматической идентификацией.

Member 13396840

я не знаю что делать сэр

Richard MacCutchan

И я тоже, потому что понятия не имею, что делает ваша система. Если вы получаете ошибку, то вам нужно посмотреть на свой код, чтобы понять, почему это происходит. Все, что Вы нам сказали, это то, что ошибка, которую вы видите, "он говорит, что STUDENT_NO уже определяет" что на самом деле нам ни о чем не говорит. Что такое определение STUDENT_NO в вашей базе данных, и где вы пытаетесь определить его во второй раз?

Member 13396840

моя система делает то, что я импортирую файл excel, в котором есть sheet1(1-й класс Qtr), sheet2(2-й класс Qtr) и sheet3(посещаемость), а затем отображаю его на datagridview, а затем сохраняю его в моих tbl_grades и tbl_attendance в моей базе данных. если я выберу sheet1, sheet2 или sheet3, чтобы отобразить его на datagridview, он работает нормально, и когда я сохранил данные из sheet1 и sheet2 на моем tbl_grades, он тоже работает нормально, но когда я сохранил данные из моего sheet3 на tbl_attendance, в моей системе возникает ошибка, моя проблема в том, как я могу сохранить данные из sheet3 в tbl_attendance?

Richard MacCutchan

Какая ошибка; пожалуйста, не ожидайте, что мы догадаемся, что вы видите, когда запускаете свой код?

Member 13396840

ошибка, с которой я всегда сталкиваюсь, заключается в том, что STUDENT_NO уже определяет, что я изменил на STUDENT_ID, но все же я получил ошибку для этого и сказал, что STUDENT_ID уже определяет.

Member 13396840

сэр, вы испытали, чтобы импортировать и загрузить файл excel, который имеет sheet1, sheet2 и sheet3, а затем сохранить данные с этих листов в другую таблицу в вашей базе данных?? как вы справляетесь с такими сценариями, сэр? использование c#

Richard MacCutchan

Ваша конкатенация двух предложений INSERT выглядит неправильной.

Member 13396840

можете ли вы исправить мою конкатенацию двух моих вставных предложений, сэр?

Richard MacCutchan

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

Member 13396840

этот код работает нормально, сэр, но он сохранил только лист 1 (1stqtr grade) и лист 2(2ndQTR)

частная btnSaved_Click недействительным(объект отправителя, EventArgs в электронной)
{
int qtr = 0;
строка att_qtr = " посещаемость";

MySqlConnection кон = новый MySqlConnection("сервер = рабочего стола-9H7QBOH; базы данных = sti_spms; УИД = корень; пароль = 1234;");
пробовать
{
строку запрос = "вставить в tbl_secondsem_grades(STUDENT_NO, имя, тему, раздел, класс, INITIAL_GRADE, квартал)" + "значения(@STUDENT_NO, @имя, @темы, @раздел, @класс @INITIAL_GRADE, @квартал)";
MySqlCommand cmd = new MySqlCommand(query, con);
DataTable dt = новый DataTable();
против.Открыть();
for (int i = 0; i < dataGridView1.Rows.Граф -1; i++)
{

если (четверть.Метод Equals("1 квартал"))
{
qtr = 1;
}
еще если (четверть.Метод Equals("2 квартал"))
{
qtr = 2;
}
еще если (четверть.Метод Equals("3 квартал"))
{
qtr = 3;
}
еще если (четверть."Равно" ("4 квартал"))
{
qtr = 4;
}
еще если (четверть.Равно ("Посещаемость"))
{
att_qtr = " посещаемость";
}
еще
{
Ящик для сообщений.Показать ("Ошибка!");
}

//int num = преобразовать.ToInt32(dataGridView1.Строки[я].Ячейки ["студент нет"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@STUDENT_NO", dataGridView1.Rows[i].Ячейки ["студент нет"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@NAME", dataGridView1.Rows[i].Ячейки ["имя"].Ценность.Метод toString());
УМК.Параметры.AddWithValue ("@SUBJECT", dataGridView1. Rows[i].Ячейки ["субъект"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@SECTION", dataGridView1.Rows[i].Ячейки ["раздел"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@INITIAL_GRADE", dataGridView1.Rows[i].Ячейки ["начальная оценка"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@GRADE", dataGridView1.Rows[i].Ячейки["кг"].Значение.Метод toString());
УМК.Параметры.AddWithValue("@квартал", квартал);
УМК.Метод executenonquery();
УМК.Параметры.Четкий();
}

}

Member 13396840

я думаю, что у меня есть проблема с этим, сэр?
УМК.Параметры.AddWithValue ("@STUDENT_NO", dataGridView1.Rows[i].Ячейки ["студент нет"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@NAME", dataGridView1.Rows[i].Ячейки ["имя"].Ценность.Метод toString());
УМК.Параметры.AddWithValue ("@SUBJECT", dataGridView1. Rows[i].Ячейки ["субъект"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@SECTION", dataGridView1.Rows[i].Ячейки ["раздел"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@INITIAL_GRADE", dataGridView1.Rows[i].Ячейки ["начальная оценка"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@GRADE", dataGridView1.Rows[i].Ячейки["кг"].Значение.Метод toString());
УМК.Параметры.AddWithValue("@квартал", квартал);
УМК.Параметры.AddWithValue ("@STUDENT_ID", dataGridView1.Rows[i].Ячейки ["студенческий билет"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@NAME", dataGridView1.Rows[i].Ячейки ["имя"].Ценность.Метод toString());
УМК.Параметры.AddWithValue ("@SUBJECT", dataGridView1. Rows[i].Ячейки ["субъект"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@SECTION", dataGridView1.Rows[i].Ячейки ["раздел"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@Total_Absences", dataGridView1.Rows[i].Ячейки ["Total_Absences"]. Value.Метод toString());
УМК.Метод executenonquery();
УМК.Параметры.Четкий();

Member 13396840

у меня есть tbl_grades в моей базе данных, внутри нее есть STUDENT_NO, NAME, SUBJECT, SECTION, GRADE, INITIAL_GRADE и QTR. и у меня есть tbl_attendance также в моей базе данных, внутри нее есть STUDENT_ID, NAME, SUBJECT, SECTION и TOTAL_ABSENCES

Richard MacCutchan

Пожалуйста, притормози и подумай. Вы получаете сообщение об ошибке, но до сих пор не сказали нам точно, что это за сообщение, или когда и где оно происходит.

Member 13396840

Извините сэр за поздний rply это ошибка с которой я столкнулся прямо сейчас

Столбец с именем STUDENT NO не может быть найден.
Имя параметра: columnName

Richard MacCutchan

Это просто простая орфографическая ошибка, которую вы должны легко увидеть.

Member 13396840

это верно, сэр?


УМК.Параметры.AddWithValue ("@STUDENT_NO", dataGridView1.Rows[i].Ячейки ["студент нет"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@NAME", dataGridView1.Rows[i].Ячейки ["имя"].Ценность.Метод toString());
УМК.Параметры.AddWithValue ("@SUBJECT", dataGridView1. Rows[i].Ячейки ["субъект"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@SECTION", dataGridView1.Rows[i].Ячейки ["раздел"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@INITIAL_GRADE", dataGridView1.Rows[i].Ячейки ["начальная оценка"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@GRADE", dataGridView1.Rows[i].Ячейки["кг"].Значение.Метод toString());
УМК.Параметры.AddWithValue("@квартал", квартал);
УМК.Параметры.Четкий();
УМК.Параметры.AddWithValue ("@STUDENT_ID", dataGridView1.Rows[i].Ячейки ["студенческий билет"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@NAME", dataGridView1.Rows[i].Ячейки ["имя"].Ценность.Метод toString());
УМК.Параметры.AddWithValue ("@SUBJECT", dataGridView1. Rows[i].Ячейки ["субъект"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@SECTION", dataGridView1.Rows[i].Ячейки ["раздел"]. значение.Метод toString());
УМК.Параметры.AddWithValue ("@Total_Absences", dataGridView1.Rows[i].Ячейки ["Total_Absences"]. Value.Метод toString());
УМК.Метод executenonquery();
УМК.Параметры.Четкий();

Richard MacCutchan

Очевидно, нет; как я уже говорил ранее, притормози и подумай. Вы просто бросаете случайные строки кода на это и надеетесь, что каким-то образом это само собой уладится.

Посмотрите на таблицу, которую вы пытаетесь обновить: какие столбцы требуют данных? Запишите их на листе бумаги.
Теперь создать инструкции Insert для таблицы и столбцы. Отметьте галочкой каждый столбец в вашем списке, когда вы добавляете его в инструкцию.
Теперь сделайте то же самое для имен значений в операторе INSERT.
Теперь аналогично добавьте параметры по одному.
Теперь прочтите его еще раз, чтобы убедиться, что вы написали все правильно.
Если повезет, теперь вы будете готовы обработать это утверждение. Сделайте это в отладчике, чтобы проверить, что все параметры содержат правильные значения. Проверьте результат выполнения инструкции execute, чтобы убедиться, что она сработала.
Если возникает исключение, убедитесь, что вы смотрите на всю информацию внутри него, чтобы увидеть, что он говорит вам.

Member 13396840

большое вам спасибо сэр :)

Member 13396840

я пытаюсь сохранить разные листы, такие как sheet1(1stqtr grade), sheet2(2ndQTR grade), sheet3( посещаемость), в мои разные таблицы в моей базе данных, но когда я пытаюсь сохранить данные из sheet3, я получаю эту ошибку "STUDENT_NO уже определен"

1 Ответов

Рейтинг:
0

Richard MacCutchan

catch (Exception ex)
                {
                    MessageBox.Show("Data  Sucessfully Saved!");
                }

Это просто за гранью нелепости.


Member 13396840

неправильный код, сэр?

Richard MacCutchan

Почему вы публикуете сообщение об успехе, когда ловите исключение? Вы понимаете, что такое исключения?

Member 13396840

Извините, сэр, я работаю над тем, чтобы изменить его в MessageBox.Показать (например, сообщение);