Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 提交对数据库的更改_C#_Database_Forms - Fatal编程技术网

C# 提交对数据库的更改

C# 提交对数据库的更改,c#,database,forms,C#,Database,Forms,我正在使用VS2k10编写一个需要用户名和密码才能运行的C#程序。我有一个保存在外部文件中的数据库,其中包含用户名和密码。当我在登录表单中单击register时,会打开另一个表单,允许您将凭据保存到登录数据库中 问题可能出在注册表表单上,而不是登录表单上。当我成功注册一个用户帐户时,登录表单似乎无法识别该用户名。它也不会保存到文件中。检查了SE如何提交对数据集的更改,但到目前为止没有任何效果 我目前的代码是: DataRow foundRow = ds.Tables["userstabl

我正在使用VS2k10编写一个需要用户名和密码才能运行的C#程序。我有一个保存在外部文件中的数据库,其中包含用户名和密码。当我在登录表单中单击register时,会打开另一个表单,允许您将凭据保存到登录数据库中

问题可能出在注册表表单上,而不是登录表单上。当我成功注册一个用户帐户时,登录表单似乎无法识别该用户名。它也不会保存到文件中。检查了SE如何提交对数据集的更改,但到目前为止没有任何效果

我目前的代码是:

    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”
也不要发布用于进行哈希计算的真实密码或真实文本。将被更改。此外,为了清晰起见,更改了名称。谢谢你。