我想将dataGridview的行保存到数据库中。我正在使用button_click事件。 当我按下按钮时,它给我以下错误:“命令执行期间遇到致命错误。”
这是我正在使用的代码:
private void save_Click(object sender, EventArgs e)
{
con.Open();
string str = "insert into cash_in_accounts (cr_id, acc_no, acc_name, amount, description) values (" + rid.Text + ",@accno, @accname, @amnt, @desc)";
for (int row = 0; row < dataGridView1.Rows.Count -1; row++)
{
MySqlCommand cmd2 = new MySqlCommand(str, con);
cmd2.Parameters.AddWithValue("@accno", dataGridView1.Rows[row].Cells[0].FormattedValue.ToString());
cmd2.Parameters.AddWithValue("@accname", dataGridView1.Rows[row].Cells[1].FormattedValue.ToString());
cmd.Parameters.AddWithValue("@desc", dataGridView1.Rows[row].Cells[2].FormattedValue.ToString());
cmd2.Parameters.AddWithValue("@amnt", dataGridView1.Rows[row].Cells[3].FormattedValue.ToString());
cmd2.ExecuteNonQuery();
}
con.Close();
}
答案 0 :(得分:0)
你为什么使用循环? 因为我认为没有使用循环, 每次单击按钮时,数据将自动保存在数据库中 并且如果你想一次又一次地插入数据,那么你也可以点击按钮,因为如果你没有,每次执行命令时值都会相同。
您的代码应该是:
con.Open();
string str = "insert into cash_in_accounts (cr_id, acc_no, acc_name, amount, description) values (" + rid.Text + ",@accno, @accname, @amnt, @desc)";
MySqlCommand cmd2 = new MySqlCommand(str, con);
cmd2.Parameters.AddWithValue("@accno", dataGridView1.Rows[row].Cells[0].FormattedValue.ToString());
cmd2.Parameters.AddWithValue("@accname", dataGridView1.Rows[row].Cells[1].FormattedValue.ToString());
cmd.Parameters.AddWithValue("@desc", dataGridView1.Rows[row].Cells[2].FormattedValue.ToString());
cmd2.Parameters.AddWithValue("@amnt", dataGridView1.Rows[row].Cells[3].FormattedValue.ToString());
cmd2.ExecuteNonQuery();
con.Close();