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