Как сохранить данные 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 уже определен"