【发布时间】: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 抱歉,我是这个网站的新手,我没有看到将评论标记为有用的选项,该选项仅用于回答?