【问题标题】:You cannot add or change a record because a related record is required in table 'tbl_routines'您无法添加或更改记录,因为表 'tbl_routines' 中需要相关记录
【发布时间】:2021-10-09 16:06:49
【问题描述】:

我的代码是通过将用户名和密码存储到访问数据库中来注册帐户。我收到错误您无法添加或更改记录,因为表 'tbl_routines.xml 中需要相关记录。从阅读中我认为这是因为主表的routine_id 列中的值被留空,但在 tbl_routine 中没有空白例程 id 作为选项。在我的程序中,我首先尝试注册用户名和密码,然后在程序中用户选择一个例程并将其存储在表中,但现在它需要留空。我假设只是在表中添加用户名和密码不会影响routine_id 列,因为它没有按要求列出,但仍然会弹出此错误,我不知道如何修复它。

if (txtRegPass.Text == txtRegPassConf.Text)
{
    con.Open();
    string register = "INSERT INTO tbl_users (username, [password]) VALUES ('" + txtRegUser.Text + "','" + txtRegPass.Text + "')"; 
    cmd = new OleDbCommand(register, con); 
    cmd.ExecuteNonQuery(); 
    con.Close();

    MessageBox.Show("Account successfully created.", "Registration Successful", MessageBoxButtons.OK, MessageBoxIcon.Information);
    txtRegUser.Text = "";
    txtRegPass.Text = "";
    txtRegPassConf.Text = ""; 
}
else
{
    MessageBox.Show("Passwords do not match.", "Registration Failed", MessageBoxButtons.OK, MessageBoxIcon.Error); 
    txtRegPass.Text = "";
    txtRegPassConf.Text = ""; 
}

这是数据库中关系的图像:

【问题讨论】:

  • 您能否创建一个可以分配给新用户的默认例程,当用户尝试对例程执行某些操作时,您可以检查他们被分配到哪个例程。
  • 使用参数避免sql注入和格式化错误。总是。
  • @David.Warwick 不知道为什么我从来没有想过这个想法,这样做让它工作了,谢谢!
  • @LarsTech 刚读过它,会改变它,谢谢你的建议。
  • @David.Warwick 抱歉,我是这个网站的新手,我没有看到将评论标记为有用的选项,该选项仅用于回答?

标签: c# ms-access oledb


【解决方案1】:

您可以在tbl_users 表中将routine_id 列设置为可为空。在这种情况下,它不会产生这个问题。

【讨论】:

  • 我进入了桌子上的设计视图,并没有将其视为属性,除非您指的是“必需”属性,该属性已设置为否。
猜你喜欢
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多