1`public void Update(Person oldperson,Person newPerson) { 尝试 {
command.CommandText ="Update TPersons SET [Password1]=?,[Name1]=?,[Expertise]=?,[Email id]=?,[Mobile]=?,[Phone no]=?,[Address]=? WHERE [ID]=?";
command.Parameters.Add(new OleDbParameter("Para1", newPerson.Password11));
command.Parameters.Add(new OleDbParameter("Para2", newPerson.Name11));
command.Parameters.Add(new OleDbParameter("Para3", newPerson.Expertise1));
command.Parameters.Add(new OleDbParameter("Para4", newPerson.Email1));
command.Parameters.Add(new OleDbParameter("Para5", newPerson.Mobile1));
command.Parameters.Add(new OleDbParameter("Para6", newPerson.Phone1));
command.Parameters.Add(new OleDbParameter("Para7", newPerson.Address1));
command.CommandType = CommandType.Text;
connection.Open();
command.ExecuteNonQuery();
}
catch (Exception)
{
throw;
}
finally
{
if (connection != null)
{
connection.Close();
}
}
}
我正在使用这个代码在我的访问数据库c#项目中使用visual studio进行更新。这告诉我一个未处理的OleDBException.SOUNDax UPDATE语句错误。请帮我解决这个问题.Thanku!
答案 0 :(得分:1)
你有很多问题/错误:
首先:,[Address[) VALUES
然后你试图使用参数化的更新语句,默认情况下这是一件好事,但你做错了(对于sql语句)并且也没有向yout命令对象添加任何参数(至少是什么在您的代码中显示。)
查看docs以获取正确的参数化查询。
在使用访问数据库时,参数的默认占位符为?
。除了qith sqlcommand参数之外,这些参数需要以完全相同的顺序分配。
所以这里有一些未经测试的代码给你一个开始:
command.CommandText = "Update TPersons SET [Password1]=?,[Name1]=?,[Expertise]=?,[Email id]=?,[Mobile]=?,[Phone no]=?,[Address]=? WHERE [ID]=?" ;
command.Parameters.Add(new OleDbParameter("Para1",newPerson.Password11));
command.Parameters.Add(new OleDbParameter("Para2",newPerson.Name11));
......等等
阅读本文以获取在OldeDB(访问)或SQL Server中使用参数的示例: