Неправильно вводит данные в столбцы параметров
Если я хочу вставить из datagridview в базу данных MYSQl, он вводит в разные столбцы вместо правильных кулонов
Код выглядит так :
private void confirmAppointmentToolStripMenuItem_Click(object sender, EventArgs e) { string constring = ConfigurationManager.ConnectionStrings["MySQLDatabaseConnection"].ConnectionString; using (MySqlConnection con = new MySqlConnection(constring)) { con.Open(); string sql = "insert into vms_db.final_appointments(visit_date,visitor_name,signin_time,vehicle_number,organization,visit_type,reason,id_type,person_visit,img) values (@visit_date,@visitor_name,@signin_time,@vehicle_number,@organization,@visit_type,@reason,@id_type,@person_visit,@img)"; using (MySqlCommand cmd = new MySqlCommand(sql, con)) { try { for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) { cmd.Parameters.AddWithValue("@visit_date", System.DateTime.Now); cmd.Parameters.AddWithValue("@visitor_name", dataGridView1.Rows[i].Cells[2].Value); cmd.Parameters.AddWithValue("@visit_address", dataGridView1.Rows[i].Cells[3].Value); cmd.Parameters.AddWithValue("@visit_city", dataGridView1.Rows[i].Cells[4].Value); cmd.Parameters.AddWithValue("@signin_time", dataGridView1.Rows[i].Cells[5].Value); cmd.Parameters.AddWithValue("@vehicle_number", dataGridView1.Rows[i].Cells[6].Value); cmd.Parameters.AddWithValue("@organization", dataGridView1.Rows[i].Cells[7].Value); cmd.Parameters.AddWithValue("@visit_type", dataGridView1.Rows[i].Cells[8].Value); cmd.Parameters.AddWithValue("@reason", dataGridView1.Rows[i].Cells[9].Value); cmd.Parameters.AddWithValue("@id_type", dataGridView1.Rows[i].Cells[10].Value); cmd.Parameters.AddWithValue("@person_visit", dataGridView1.Rows[i].Cells[11].Value); cmd.Parameters.AddWithValue("@img", dataGridView1.Rows[i].Cells[12].Value); cmd.ExecuteNonQuery(); MessageBox.Show("Final Appointments Reserved, You may Exit Window", "Notification", MessageBoxButtons.OK, MessageBoxIcon.Information); Close(); } } catch(Exception ex) { MessageBox.Show(ex.ToString()); } } } }
Я что-то упустил , мои таблицы столбцов базы данных выглядят так
id | visit_date | visitor_name | visit_address | visit_city | signin_time | vehicle_number | organization | visit_type | reason | id_type | person_visit | img | signout_time
Что я уже пробовал:
cmd.Parameters.AddWithValue("@visitor_name", dataGridView1.Rows[i].Cells["visitor_name"].Value); cmd.Parameters.AddWithValue("@visit_address", dataGridView1.Rows[i].Cells["visit_address"].Value);
[no name]
Попробуйте обратиться к столбцам по имени, см., например, здесь: Объект datagridviewcell.ColumnIndex-Eigenschaft (Система.Окна.Формы)[^]
И гораздо лучше получить значения из базового набора данных, если они доступны
Richard Deeming
Не должно ли это окно сообщения и Close
вызов снаружи из for
петля?
И вам нужно будет очистить коллекцию параметров после каждого ExecuteNonQuery
вызов.