if(Page.IsValid)
{
  string username = txtUsername.Text;
  string password = FormsAuthentication.HashPasswordForStoringInConfigFile  (txtPassword.Text,"md5");
  string email = txtEmail.Text;
  string connString = "server=(local);database=guestbook;uid=sa;pwd=321560;";
  SqlConnection conn = new SqlConnection(connString);
  string sql = "INSERT INTO users(username,password,email) values('"+username+"','"+password+"','"+email+"')";           //怎么同时插入一模一样的纪录?
  conn.Open();
  SqlCommand cmd = new SqlCommand(sql,conn);
  cmd.ExecuteNonQuery();
  conn.Close();
  Response.Write("<script language='javascript'>{alert('注册成功!');window.location.href='default.aspx'}</script>");
}

解决方案 »

  1.   

    你为什么不把这段代码写到注册按纽里面去呢?if(!Page.IsPostBack)
    {
      string username = txtUsername.Text;
      string password = FormsAuthentication.HashPasswordForStoringInConfigFile  (txtPassword.Text,"md5");
      string email = txtEmail.Text;
      string connString = "server=(local);database=guestbook;uid=sa;pwd=321560;";
      SqlConnection conn = new SqlConnection(connString);
      string sql = "INSERT INTO users(username,password,email) values('"+username+"','"+password+"','"+email+"')";           //怎么同时插入一模一样的纪录?
      conn.Open();
      SqlCommand cmd = new SqlCommand(sql,conn);
      cmd.ExecuteNonQuery();
      conn.Close();
      Response.Write("<script language='javascript'>{alert('注册成功!');window.location.href='default.aspx'}</script>");
    }
      

  2.   

    我认为你直接可以把语句写到click 事件中不用判断Page.IsValid
      

  3.   

    1. if(!Page.IsPostBack)改用if(!Page.IsPostBack),则数据没有插入数据库2. int numAff = cmd.ExecuteNonQuery();
      输出numAff为1,插入数据库却有2条??
      

  4.   

    protected void sbt_click(object sender, System.EventArgs e)
    {
      string username = txtUsername.Text;
      string password = FormsAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Text,"md5");
      string email = txtEmail.Text;
      string connString = "server=(local);database=guestbook;uid=sa;pwd=321560;";
      SqlConnection conn = new SqlConnection(connString);
      string sql = "INSERT INTO users(username,password,email) values('"+username+"','"+password+"','"+email+"')";
      conn.Open();
      SqlCommand cmd = new SqlCommand(sql,conn);
      int numAff = cmd.ExecuteNonQuery();
      lblNum.Text = numAff.ToString();                       //lblNum输出为1,怎么出入2条??
      conn.Close();
      //Response.Write("<script language='javascript'>{alert('注册成功!');window.location.href='default.aspx'}</script>");
    }
      

  5.   

    单步到int numAff = cmd.ExecuteNonQuery();时numAff显示为1,数据库中也只有一条
    然后结束关闭浏览器,数据库中有了2条!!lblNum.Text = numAff.ToString();
    后面加上这个Server.Transfer("default.aspx");
    则数据库中始终只有1条纪录,不跳转不行吗????
      

  6.   

    conn.Close();
    在他的后面Response.end();
    看看数据库里面是几条记录如果是一个那么就是其他地方的问题了
    把这个改成if(Page.IsValid)    去掉看看是否还有类似的问题
      

  7.   

    我不想Server.Transfer("default.aspx");
    只想在本页中提示注册成功,可怎么总插入2条记录,又没有提交2次???
    什么原因?
      

  8.   

    单步到int numAff = cmd.ExecuteNonQuery();时numAff显示为1,数据库中也只有一条
    然后结束关闭浏览器,数据库中有了2条!!lblNum.Text = numAff.ToString();
    后面加上这个Server.Transfer("default.aspx");
    则数据库中始终只有1条纪录,不跳转不行吗????
      

  9.   

    原因找到了:conn.Close();的后面不管加Response.end();还是Server.Transfer("default.aspx");
    都只要一条.
    跳转(Transfer)别的页面或者提交后结束执行(Response.End();)本页面那就只有一条记录
    否则重定位到本页面则有2条. 可有时候提交后回到本页面怎样避免插入2条记录??这30分给前面的几位
    谁帮我解决这个问题,再加30分
      

  10.   

    我是写到注册按钮中的
    protected void sbt_click(object sender, System.EventArgs e)
    {......}