“命令执行期间遇到致命错误。”

时间:2014-02-24 11:42:45

标签: c# winforms datagridview

我想将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();
}

1 个答案:

答案 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();