我在向表中插入数据时遇到问题。我不知道数据库模型或模式是什么样的,因为我只是在遇到此错误之前查找并修复现有程序的错误
MySql.Data.MySqlClient.MySqlException (0x80004005): Cannot add or update a child row: a foreign key constraint fails (`my_database`.`movies_class`, CONSTRAINT `fk_movies_class_movies1` FOREIGN KEY (`movie_id`) REFERENCES `movies_notworking` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)
at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
这是我的代码
public void tabinsertcheck(MySqlConnection myconn, DataGridView dgv, int intid)
{
for (int i = 0; i < dgv.Rows.Count; i++)
{
if (dgv[0, i].Value != null)
{
if ((bool)dgv[0, i].Value)
{
StringBuilder sqry = new StringBuilder();
sqry.Append("select max(id) from movies_class");
MySqlCommand cmd = new MySqlCommand(sqry.ToString(), myconn);
int max_id = Convert.ToInt32(cmd.ExecuteScalar())+1;
sqry = new StringBuilder();
sqry.Append(String.Format("insert into movies_class values({0},{1},{2})",
max_id,intid, dgv[3, i].Value.ToString()));
if (myconn.State == ConnectionState.Closed)
myconn.Open();
cmd = new MySqlCommand(sqry.ToString(), myconn);
cmd.ExecuteNonQuery();
cmd.Dispose();
myconn.Close();
}
}
}
}
我正在使用循环,因为我在数据库中保存的每个复选框都有很多复选框,而且我不知道如何修复它。提前致谢
最佳答案
您正在尝试向 movies_class
表中插入一行,其中 movie_id
字段的值在 movies_notworking
表中不存在 Id
字段。检查您的数据并确保为表中的引用字段插入正确的值。
关于C#插入表,报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26354416/