更新数据库访问,c#

本文关键字:访问 数据库 更新 | 更新日期: 2023-09-27 18:13:49

我试图在c#中更新我的访问数据库,我真的不知道为什么不工作。我的代码:

 public void EditAlbum (Album newAlbum)
    {
        command.CommandText = "UPDATE Album SET [Name]=@Name, [Description]=@Description, [Location]=@Location, [Date]=@Date,[CoverPhotoURL]=@Cover WHERE [ID]=@Id";
        command.Parameters.AddWithValue("@Name", newAlbum.Name);
        command.Parameters.AddWithValue("@Description", newAlbum.Description);
        command.Parameters.AddWithValue("@Location", newAlbum.Location);
        command.Parameters.AddWithValue("@Data", newAlbum.Date);
        command.Parameters.AddWithValue("@Id", newAlbum.ID);
        command.Parameters.AddWithValue("@Cover", newAlbum.CoverPhoto);
        command.ExecuteNonQuery();
    }

我的数据库有下一个字段,按此顺序:ID,名称,描述,位置,日期,CoverPhotoURL。我没有收到任何错误信息,但这段代码什么也不做

更新数据库访问,c#

问题在于您向集合添加参数的顺序。
OleDb不通过名称来识别参数,而只通过位置来识别参数。
因此,您需要按照它们各自占位符在查询

中出现的顺序添加参数。
public void EditAlbum (Album newAlbum)
{
    command.CommandText = @"UPDATE Album SET [Name]=@Name, 
                            [Description]=@Description, 
                            [Location]=@Location, 
                            [Date]=@Date,
                            [CoverPhotoURL]=@Cover 
                            WHERE [ID]=@Id";
    command.Parameters.AddWithValue("@Name", newAlbum.Name);
    command.Parameters.AddWithValue("@Description", newAlbum.Description);
    command.Parameters.AddWithValue("@Location", newAlbum.Location);
    command.Parameters.AddWithValue("@Data", newAlbum.Date);
    command.Parameters.AddWithValue("@Cover", newAlbum.CoverPhoto);
    // Moved after the Cover parameter
    command.Parameters.AddWithValue("@Id", newAlbum.ID);
    command.ExecuteNonQuery();
}