如何将数据库的问题列分配给变量,以便我可以将其分配给label3和4

时间:2017-02-14 23:08:26

标签: c# asp.net sql-server

如何将数据库的“问题”列分配给变量,以便我可以将其分配给label3和label4。请,这里的任何人都可以帮我解决这个问题,因为我要做的是为我的数据库中存储的两个答案分配一个问题。我已经选择了select命令中所述的答案,但我如何为标签3和标签4的答案分配问题。感谢帮助。所以,远程代码工作没有错误,但我想要提到帮助。感谢帮助。 如图所示,我有列Security1和Security2。基本上,我想将它分配给Label3.Text = Security1等标签; Label4.Text = Security2; 图像

3 个答案:

答案 0 :(得分:0)

您应该if阻止如下。

if (reader != null &&  reader.HasRows)
{
    Label3.Text = reader.GetString("Security1");
    Label4.Text = reader.GetString("Security2");
    newpass.Visible = true;
    confpass.Visible = true;
    Label1.Text = "New Password";
    Label2.Text = "Confirm New Password";
    SqlConnection cons = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
    cons.Open();
    SqlCommand updates = new SqlCommand("update reg set Password='" + confpass.Text + "'", cons);
    SqlDataAdapter da = new SqlDataAdapter(updates);
    DataSet ds = new DataSet();
    da.Fill(ds);
    con.Close();
    cons.Close();
    //ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Your password has been changed')</script>");
           // Response.Redirect("Default.aspx");
}

此解决方案特定于您的问题。我看到代码可以改进很多,但取决于您的业务逻辑和要求。

答案 1 :(得分:0)

将你的方法分成两部分:

首先,询问用户的姓名。当他输入他的名字并点击一个按钮时,从数据库中获取相应的安全问题并将其分配给标签,例如Label3.Text = reader("Security1").ToString()

第二次,让用户输入答案并使用现有代码对其进行测试。

答案 2 :(得分:0)

我发现你正在使用WebForms,首先你需要了解它是如何工作的:

  1. 如果不知道用户名,您无法知道安全问题,这意味着您有两种选择:
    • 页面上有2个按钮
    • 重定向到另一个页面 无论哪种方式,您都将发送包含用户名的POST或GET参数。
  2. 第一个案例通知 - WebForms不喜欢一个页面上的2个表单,您必须将答案分开并通过ID获取它们,然后在第二个按钮上添加onClick事件来处理数据的实际更新

    然后您将通过Request.Form['username']获取它,其中用户名是您表单中定义的键。

    获取后,使用给定的用户名执行阅读器,然后通过reader.GetString("Security1")在数据库中显示问题,现在您可以获取输入并将其传递给更新按钮的onClick侦听器 (另一种方式,如果您选择了选项no 2 - onsubmit事件表格)

    1. 以明文格式保存密码甚至安全答案真是太糟糕了,甚至是安全答案,谷歌关于Hashing,基本上你要做的是将哈希存储在数据库中并将用户输入与哈希进行比较数据库(相同的输入将提供相同的哈希值(在某些算法中,它赢了,因为它使用了盐,这些算法已经内置了比较功能,所以你不必手动进行比较))< / LI>

      所以你的HTML看起来应该是这样的:

      <form runat="server">
          <input type="text" name="username" />
          <asp:Button PostBackUrl="~/postbackurl.aspx" runat="server" Text="Submit" />
      </form>
      

      你的CodeBehind:

      protected void Page_Load(object sender, EventArgs e)
      {
          if (IsPostBack)
          {
              // Fetching code here
              // ...
              cmd.Parameters.AddWithValue("@username", Request.Form["username"]);
              // ...
              Label3.Text = reader.GetString("Security1");
          }
      }