gpt4 book ai didi

c# - 删除具有外键约束的 Access 记录

转载 作者:行者123 更新时间:2023-11-30 16:45:49 24 4
gpt4 key购买 nike

我正在制作一个基于 Access 数据库的 WPF 项目。数据库有两个表:

  • 电影(MovieID:PK、标题、导演等)
  • Actor (ActorID:PK,MovieID:FK,名字,姓氏等)

问题是如果我想删除一部电影,如果还有与电影相关的 Actor 。

我删除电影的代码:

public static void DeleteMovie(Movie mov)
{
string commandString = string.Format("DELETE FROM tblMovies WHERE MovieID = {0}", mov.MovieID);

OleDbConnection conn = new OleDbConnection(connectionString);
OleDbCommand command = new OleDbCommand();
OleDbDataAdapter adapter = new OleDbDataAdapter();
conn.Open();

command.Connection = conn;
command.CommandText = commandString;
adapter.DeleteCommand = command;
adapter.DeleteCommand.ExecuteNonQuery();
conn.Close();
}

作为临时解决方案,我添加了一个消息框,要求确认 Actor 是否已从电影中删除。但如果它们不是并且您单击是,则会发生这种情况:

Movie mov = (Movie)listBoxMovies.SelectedItem;
MovieRepository.DeleteMovie(mov);
MessageBox.Show("The movie: '" + mov.Title + " 'has been deleted.");

我得到的错误是我想删除 Actor 具有相同 MovieID 的电影:

An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll Additional information: The record cannot be deleted or changed because table 'tblActors' includes related records.

如果我点击“删除电影”按钮,我怎样才能删除电影和相应的 Actor ?

最佳答案

您可以编写 2 个查询 - 一个先删除 Actor ,然后删除电影。

或者,您可以进入 Access 并编辑与“级联删除相关记录”的关系。

要到达那里,请进入 Access,转至数据库工具并单击关系。右键单击从 Movies 到 Actors 的关系箭头,单击“Edit Relationship”,您将在此处找到选项。

关于c# - 删除具有外键约束的 Access 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41420183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com