无法更新MySql数据库C#

时间:2018-06-25 10:15:46

标签: c# mysql

我正在尝试通过不同类型的控件来更新数据库,这些控件在Gridview中被选中时会填充,但是我的代码无法正常工作,我不知道该怎么做。预先感谢您的帮助。 下面是我的代码:

更新数据库的主要方法:

public static void Editez_Nota(int idintrare, int idspecializare, int idnivelstudii, int idanstudiu, int idstudent, int idmaterie, int idprof, double iddnota, DateTime dataEvaluarii)
    {
        conn.Open();
        MySqlCommand editezNota = new MySqlCommand("UPDATE catalog SET iddspec=@iddspec, iddnivel=@iddnivel, " +
            "iddan=@iddan, iddstudent=@iddstudent, iddmaterie=@iddmaterie, iddprof=@iddprof, " +
            "iddnota=@iddnota, idddata=CAST(@idddata as datetime) WHERE idintrare=@idintrare", conn);
        try
        {

            editezNota.Parameters.AddWithValue("@idintrare", idintrare); **//this was missing**
            editezNota.Parameters.AddWithValue("@iddspec", idspecializare);
            editezNota.Parameters.AddWithValue("@iddnivel", idnivelstudii);
            editezNota.Parameters.AddWithValue("@iddan", idanstudiu);
            editezNota.Parameters.AddWithValue("@iddstudent", idstudent);
            editezNota.Parameters.AddWithValue("@iddmaterie", idmaterie);
            editezNota.Parameters.AddWithValue("@iddprof", idprof);
            editezNota.Parameters.AddWithValue("@iddnota", iddnota);
            editezNota.Parameters.AddWithValue("@idddata", dataEvaluarii);
            editezNota.ExecuteNonQuery();
            conn.Close();
        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

保存按钮:

private void button2_Click(object sender, EventArgs e)
    {
        try
        {
            int rowindex = dataGridViewNote.CurrentRow.Index;
            int id_intrare = Convert.ToInt32(dataGridViewNote.Rows[rowindex].Cells[0].Value.ToString());
            int idspecializare = Convert.ToInt32(comboBoxSpec.SelectedValue);
            int idnivelstudii = Convert.ToInt32(comboBoxNivel.SelectedValue);
            int idanstudiu = Convert.ToInt32(comboBoxAn.SelectedValue);
            int idstudent = Convert.ToInt32(comboBoxStudent.SelectedValue);
            int idmaterie = Convert.ToInt32(comboBoxMaterie.SelectedValue);
            int idprof = Convert.ToInt32(comboBoxProf.SelectedValue);
            double iddnota = Convert.ToDouble(textNota.Text);


            DB_Catalog.Editez_Nota(id_intrare, idspecializare, idnivelstudii, idanstudiu, idstudent, idmaterie, idprof, iddnota, dateTimeevaluare.Value.Date);
            dataGridViewNote.DataSource = DB_Catalog.Populez_Note();


        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

1 个答案:

答案 0 :(得分:0)

我设法解决了。问题在于它无法识别表的主键(WHERE子句),因为我没有在datagrid中声明存储所选项目的主键的变量。 我将编辑代码,以防其他人犯同样的愚蠢错误 谢谢大家的回答!