C# 无法添加或更新子行:外键约束失败-在插入1时停止
我想做的是,一旦我插入数据,它不会插入同一个用户两次,因为有多个试验。然而,我得到了上面的错误。用于插入用户的insert语句是C# 无法添加或更新子行:外键约束失败-在插入1时停止,c#,mysql,C#,Mysql,我想做的是,一旦我插入数据,它不会插入同一个用户两次,因为有多个试验。然而,我得到了上面的错误。用于插入用户的insert语句是 bool userisExist = checkUser(personName, age, gender, handedness, comments); if (!userisExist) { MySqlCommand insertUser = new MySqlCom
bool userisExist = checkUser(personName, age, gender, handedness, comments);
if (!userisExist)
{
MySqlCommand insertUser = new MySqlCommand();
insertUser.Connection = c;
insertUser.CommandText = "INSERT INTO user (userID, name, age, gender, handedness, comments) VALUES(NULL, @personName , @age , @gender , @handedness , @comments)";
insertUser.Parameters.Add("@personName", MySqlDbType.VarChar).Value = personName;
insertUser.Parameters.Add("@age", MySqlDbType.Int64).Value = age;
insertUser.Parameters.Add("@gender", MySqlDbType.VarChar).Value = gender;
insertUser.Parameters.Add("@handedness", MySqlDbType.VarChar).Value = handedness;
insertUser.Parameters.Add("@comments", MySqlDbType.VarChar).Value = comments;
insertUser.ExecuteNonQuery();
Console.WriteLine("User Data has been inserted.");
}
else
{
Console.WriteLine("User Data already exist.");
}
我在此期间的插入声明是
insertGazePeriod.Connection = c;
insertGazePeriod.CommandText = "INSERT INTO gazeperiod (gazeID, duration, userID) VALUES(NULL, @duration , LAST_INSERT_ID())";
insertGazePeriod.Parameters.Add("@duration", MySqlDbType.Int64).Value = duration;
insertGazePeriod.ExecuteNonQuery();
Console.WriteLine("Gaze Period data has been inserted.");
//END INSERT gazeperiod
}
我的支票用户是
private bool checkUser(String personName, String age, String gender, String handedness, String comments)
{
try
{
int returnValue = -1;
MySqlCommand selectUser = new MySqlCommand();
selectUser.Connection = c;
selectUser.CommandText = "SELECT userID from user WHERE name= @personName AND age = @age AND gender = @gender AND handedness = @handedness AND comments = @comments";
selectUser.CommandType = CommandType.Text;
selectUser.Parameters.Add("@personName", MySqlDbType.VarChar).Value = personName;
selectUser.Parameters.Add("@age", MySqlDbType.Int64).Value = age;
selectUser.Parameters.Add("@gender", MySqlDbType.VarChar).Value = gender;
selectUser.Parameters.Add("@handedness", MySqlDbType.VarChar).Value = handedness;
selectUser.Parameters.Add("@comments", MySqlDbType.VarChar).Value = comments;
returnValue = (int)selectUser.ExecuteScalar();
Console.WriteLine("returnValue-" +returnValue);
return true;
}
catch (Exception e)
{
Console.WriteLine("returnValue Exception-" + e.ToString());
return false;
}
}
现在,它只打印第一个用户,并停止打印其他数据,因为已经有一个用户具有当前ID。我不希望多次插入同一个用户 我认为问题出在您的
INSERT
sql语句中:
insertUser.CommandText = "INSERT INTO user (userID, name, age, gender, handedness, comments) VALUES(NULL, @personName , @age , @gender , @handedness , @comments)";
我很确定您不想在
userID
列中插入NULL
。如果它是一个自动增量
列,则应将其保留。故障实际发生的位置。你能把你的代码限制到失败的程度吗