Update语句中的OleDBException

时间:2014-07-08 10:13:12

标签: c# ms-access-2007

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!

1 个答案:

答案 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中使用参数的示例:

Configuring Parameters and Parameter Data Types