Since you are using System.Data.OleDb as your database provider (regardless of whether you use sql server) do you need to use ? as a parameter placeholder, for example:
"UPDATE [Student] SET Name = ? Where Id = ?";
Using the System.Data.OleDb provider, the parameter names no longer matter, but you need to make sure that the parameters are in the order that the parametric objects add to the command object's parameter collection.
EDIT: If you want to keep the @ placeholder as a parameter, you can simply change this:
DbProviderFactory dbFactory = DbProviderFactories.GetFactory("System.Data.OleDb");
to
DbProviderFactory dbFactory = DbProviderFactories.GetFactory("System.Data.SqlClient");
source share