Reputation: 13
I am trying to build an update button where I am able to edit the data from Textbox
. I am using an Access database and I am having some problems and I cannot update it.
Bellow is my code:
private void cmdUpdate_Click(object sender, EventArgs e)
{
try
{
con = new OleDbConnection(cs.DBConn);
con.Open();
string queryUpdate = @"UPDATE tblFixing SET Title=@Title, CodeBefore=@CodeBefore, CodAfter=@CodAfter, Exp=@Exp, Example=@Example, Notes=@Notes WHERE FixID=@FixID";
cmd = new OleDbCommand(queryUpdate);
cmd.Connection = con;
cmd.Parameters.Add(new OleDbParameter("@FixID", OleDbType.WChar, 20, "FixID"));
cmd.Parameters.Add(new OleDbParameter("@Title", OleDbType.WChar, 255, "Title"));
cmd.Parameters.Add(new OleDbParameter("@CodeBefore", OleDbType.WChar, 0, "CodeBefore"));
cmd.Parameters.Add(new OleDbParameter("@CodAfter", OleDbType.WChar, 0, "CodAfter"));
cmd.Parameters.Add(new OleDbParameter("@Exp", OleDbType.WChar, 0, "Exp"));
cmd.Parameters.Add(new OleDbParameter("@Example", OleDbType.WChar, 0, "Example"));
cmd.Parameters.Add(new OleDbParameter("@Notes", OleDbType.WChar, 255, "Notes"));
cmd.Parameters["@FixID"].Value = cmbID.Text.Trim();
cmd.Parameters["@Title"].Value = txtTitulo.Text.Trim();
cmd.Parameters["@CodBefore"].Value = rchCodBefore.Text.Trim();
cmd.Parameters["@CodAfter"].Value = rchCodAfter.Text.Trim();
cmd.Parameters["@Exp"].Value = rchExplicacao.Text.Trim();
cmd.Parameters["@Example"].Value = rchExemplo.Text.Trim();
cmd.Parameters["@Notes"].Value = rchNotas.Text.Trim();
cmd.ExecuteNonQuery();
MessageBox.Show("Successful updated", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
con.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error\nDetails: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
I debug the code and it does everything but the data does not update. What should I do?
Upvotes: 1
Views: 241
Reputation: 81610
OleDB doesn't use named parameters. They appear in index order.
You have the @FixID
parameter as the first parameter added to the collection, but when you look at the sql string, it's the last parameter in the string.
Change your parameter order:
cmd.Parameters.Add(new OleDbParameter("@Title", OleDbType.WChar, 255, "Title"));
cmd.Parameters.Add(new OleDbParameter("@CodeBefore", OleDbType.WChar, 0, "CodeBefore"));
cmd.Parameters.Add(new OleDbParameter("@CodAfter", OleDbType.WChar, 0, "CodAfter"));
cmd.Parameters.Add(new OleDbParameter("@Exp", OleDbType.WChar, 0, "Exp"));
cmd.Parameters.Add(new OleDbParameter("@Example", OleDbType.WChar, 0, "Example"));
cmd.Parameters.Add(new OleDbParameter("@Notes", OleDbType.WChar, 255, "Notes"));
cmd.Parameters.Add(new OleDbParameter("@FixID", OleDbType.WChar, 20, "FixID"));
Upvotes: 2