更新数据库访问,c#

时间:2014-07-20 14:11:03

标签: c# database

我正在尝试用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。 我没有收到任何错误消息,但此代码不执行任何操作。

1 个答案:

答案 0 :(得分:3)

问题是您将参数添加到集合的顺序 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();
}