Update语句中的oledbeexception

本文关键字:oledbeexception 语句 Update | 更新日期: 2023-09-27 18:12:01

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。这表明oledbeexception未被处理。UPDATE语句语法错误。请帮我解决这个问题,谢谢!

Update语句中的oledbeexception

你有很多问题/错误:

first this: ,[Address[) VALUES

那么您已经尝试使用参数化的更新语句,这在默认情况下是一件好事,但是您做错了(对于SQL语句),并且也没有向您的命令对象添加任何参数(至少在您的代码中显示)。

查看文档以获得正确的参数化查询。

在使用access数据库时,参数的默认占位符是?。除了使用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 (access)或SQL Server中使用参数:

配置参数和参数数据类型