C# 提交对数据库的更改
我正在使用VS2k10编写一个需要用户名和密码才能运行的C#程序。我有一个保存在外部文件中的数据库,其中包含用户名和密码。当我在登录表单中单击register时,会打开另一个表单,允许您将凭据保存到登录数据库中 问题可能出在注册表表单上,而不是登录表单上。当我成功注册一个用户帐户时,登录表单似乎无法识别该用户名。它也不会保存到文件中。检查了SE如何提交对数据集的更改,但到目前为止没有任何效果 我目前的代码是:C# 提交对数据库的更改,c#,database,forms,C#,Database,Forms,我正在使用VS2k10编写一个需要用户名和密码才能运行的C#程序。我有一个保存在外部文件中的数据库,其中包含用户名和密码。当我在登录表单中单击register时,会打开另一个表单,允许您将凭据保存到登录数据库中 问题可能出在注册表表单上,而不是登录表单上。当我成功注册一个用户帐户时,登录表单似乎无法识别该用户名。它也不会保存到文件中。检查了SE如何提交对数据集的更改,但到目前为止没有任何效果 我目前的代码是: DataRow foundRow = ds.Tables["userstabl
DataRow foundRow = ds.Tables["userstable"].Rows.Find(username.Text);
if (foundRow != null)
{ MessageBox.Show("Username already exists!"); }
else
{
DataRow newrow = ds.Tables["userstable"].NewRow();
newrow["ID"] = username.Text;
newrow["hash"] = CalculateMD5Hash(password.Text + username.Text + "hambába");
ds.Tables["userstable"].Rows.Add(newrow);
username.Text = "";
password.Text = "";
repeatpass.Text = "";
ds.AcceptChanges();
MessageBox.Show("Registration complete!");
}
“ds”是使用的数据集。
该表有两列——“ID”和“hash”,其中包含用户名和从密码计算的哈希值。有什么问题吗,我错过了什么吗?ds.AcceptChanges()代码>不更新,但签名以忽略更改。对于更新,您需要将a与用于更新的命令一起使用,并使用update()
方法:
DataAdapter.Update(ds);
用于填充数据集的DataAdapter在哪里?你需要这样做
try
{
SqlDataAdapter1.Update(Dataset1.Tables["Table1"]);
}
catch (Exception e)
{
// Error during Update, add code to locate error, reconcile
// and try to update again.
}
有关更多信息,请参阅此链接
我还建议您将写入数据库的代码与影响UI的代码分开。在这里查看MVC(模型-视图-控制器)模式是什么。在这里查找关于ASP.NET MVC的初学者教程我不知道您的设置,但知道ds.AcceptChanges();不要将更改写入基础数据库。如果您已经将其设置为这样工作,则必须显示代码,但仅接受更改是不够的。MSDN:在数据集上调用AcceptChanges时,任何仍处于编辑模式的DataRow对象都会成功结束其编辑。每个DataRow的RowState属性也会更改;添加和修改的行将保持不变,删除的行将被删除。我建议您为UI控件指定有意义的名称,如用户名而不是textBox1。“hambába”
也不要发布用于进行哈希计算的真实密码或真实文本。将被更改。此外,为了清晰起见,更改了名称。谢谢你。