UPDATE Command Parameters in C # for Access 2003 Not Update

access 2003 vs 2010 c #

I do not see where I was wrong. There is no error, but the data is not updated. I have insert, delete and edit, but I don't know why I cannot get this to work. Please help me, please, here, thanks in advance ...

connection string

myCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:..\TempDB.mdb"); 

Update Method ...

  private void btnUpdate_Click(object sender, EventArgs e) { OleDbCommand cmd = new OleDbCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = "UPDATE [Family] SET [FirstName] = ?, [LastName] = ?, [FamilyDOB] = ?, [Medical] = ? WHERE [ID] = ?"; //tried this as well //cmd.CommandText = "UPDATE [Family] SET [FirstName] = FirstName, [LastName] = @LastName, [DOB] = @StudentDOB, [Medical] = @Medical WHERE [ID] = @ID"; cmd.Parameters.AddWithValue("@ID", txtFamID.Text); cmd.Parameters.AddWithValue("@FirstName", txtFirstName.Text); cmd.Parameters.AddWithValue("@LastName", txtLastName.Text); cmd.Parameters.AddWithValue("@FamDOB", txtFamDOB.Text); cmd.Parameters.AddWithValue("@Medical", txtMedical.Text); cmd.Connection = myCon; myCon.Open(); cmd.ExecuteNonQuery(); myCon.Close(); } 
+4
source share
2 answers

Place the parameter values ​​in the same order as in the SQL statement.

 cmd.Parameters.AddWithValue("@FirstName", txtFirstName.Text); cmd.Parameters.AddWithValue("@LastName", txtLastName.Text); cmd.Parameters.AddWithValue("@FamDOB", txtFamDOB.Text); cmd.Parameters.AddWithValue("@Medical", txtMedical.Text); cmd.Parameters.AddWithValue("@ID", txtFamID.Text); 

OleDB plus MS Access does not care about parameter names, only their order.

+5
source

The OLE DB.NET Framework data provider uses positional parameters that are marked with a question mark (?) Instead of the named parameters.

Change this:

  cmd.Parameters.AddWithValue("@ID", txtFamID.Text); cmd.Parameters.AddWithValue("@FirstName", txtFirstName.Text); cmd.Parameters.AddWithValue("@LastName", txtLastName.Text); cmd.Parameters.AddWithValue("@FamDOB", txtFamDOB.Text); cmd.Parameters.AddWithValue("@Medical", txtMedical.Text); 

to:

  cmd.Parameters.AddWithValue("?", txtFamID.Text); cmd.Parameters.AddWithValue("?", txtFirstName.Text); cmd.Parameters.AddWithValue("?", txtLastName.Text); cmd.Parameters.AddWithValue("?", txtFamDOB.Text); cmd.Parameters.AddWithValue("?", txtMedical.Text); 

Read more: OleDbParameter class

+3
source

All Articles