C# 数据库未正确存储信息,将信息存储在不同的行上

C# 数据库未正确存储信息,将信息存储在不同的行上,c#,asp.net,sql,sql-server,database,C#,Asp.net,Sql,Sql Server,Database,数据库没有将所有信息存储在同一行上。在第一页,当我点击按钮时,它会记录下来,很好,它被存储了。然后在下一页,当我点击按钮时,它存储了信息,但在另一行?有什么解决办法吗?这是问题所在,代码如下 第1页 public void addInformationToDatabase() { string Sex = ddlGender.Text; string Name = tbxName.Text; string DOB = tbxDOB.Te

数据库没有将所有信息存储在同一行上。在第一页,当我点击按钮时,它会记录下来,很好,它被存储了。然后在下一页,当我点击按钮时,它存储了信息,但在另一行?有什么解决办法吗?这是问题所在,代码如下


第1页

public void addInformationToDatabase()
    {
        string Sex = ddlGender.Text;
        string Name = tbxName.Text;
        string DOB = tbxDOB.Text;

        string connectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

        SqlConnection Con = new SqlConnection(connectionString);

        SqlCommand command = new SqlCommand();
        command.Connection = Con;
        command.CommandType = CommandType.Text;
        command.CommandText = "INSERT INTO [User] (GenderID,Name,DOB) VALUES(@Sex,@Name,@DOB)";

        command.Parameters.AddWithValue("@Sex", Sex);
        command.Parameters.AddWithValue("@Name", Name);
        command.Parameters.AddWithValue("@DOB", DOB);

        try
        {
            Con.Open();
            command.ExecuteNonQuery();

        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
        finally
        {
            Con.Close();
        }
    }

第二页

public void save()
    {

        string checkboxSelection = CheckBoxList1.SelectedItem.ToString();

        string connectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

        SqlConnection Con = new SqlConnection(connectionString);

        SqlCommand c = new SqlCommand();
        c.Connection = Con;
        c.CommandType = CommandType.Text;
        c.CommandText = "INSERT INTO [User] (Ans1) VALUES(@Ans1)";

        c.Parameters.AddWithValue("@Ans1", checkboxSelection);

        try
        {
            Con.Open();
            c.ExecuteNonQuery();

        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
        finally
        {
            Con.Close(); 
        }
    }


任何需要帮助的内容

您的第一页需要在插入后重新获取ID,然后您的第二页需要基于该ID执行插入,而不是后续插入

关于找回ID有很多资源,例如

(我假设id字段唯一标识您的行)

第一项质询-

 c.CommandText = "INSERT INTO [User] (Ans1) VALUES(@Ans1); SELECT SCOPE_IDENTITY()";
 ...
  int userID = (Int32) c.ExecuteScalar();
您需要将该ID传递到第2页,并将插入内容更改为更新:

"UPDATE User] SET Ans1 = @Ans1 WHERE Id = @id";
您还需要添加id作为参数

c.Parameters.AddWithValue("@id", userID);

快速检查-是否要在第一页上为用户创建记录,并在第二页上更新该用户的行?@shree.pat18是的,没错,但此信息会在下面的行上更新并生成一个新id,我不知道如何解决此问题。在这种情况下,您需要在第二页上使用
更新
查询。您需要查看哪些列可用于标识要更新的记录,在页面之间传递该值,并在更新查询中添加一个
WHERE
子句,以仅更新该记录。我理解这一点,但我不理解的是WHERE子句,因为它应该知道更新的位置,因为我正在输入它的页面上对其进行编码?SQL语句不是这样工作的。它们彼此独立。它们没有内存,每个SQL语句都应该有自己的“where”语句。它们不会被重用。
c.CommandText=“插入到[User](Ans1)输出INSERTED.ID值(@Ans1)”这就是我现在拥有的?仍然不工作,我认为我做得不对。你能告诉我吗?我现在有了这个c.CommandText=“更新[用户]集[Ans1]=@Ans1”;它会将整个列更新为所选的ANS1,这是因为您需要where子句,即只更新ID=xxOk的位置,我明白您的意思,但我希望在用户选择时自动更新,我不能让ID=1,然后下一个peson可能是2,而这不会更新?