我正在尝试通过不同类型的控件来更新数据库,这些控件在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);
}
}
答案 0 :(得分:0)
我设法解决了。问题在于它无法识别表的主键(WHERE子句),因为我没有在datagrid中声明存储所选项目的主键的变量。 我将编辑代码,以防其他人犯同样的愚蠢错误 谢谢大家的回答!