我是个新手.第1次做登陆界面.现在的问题是不知道怎么把注册资料写到数据库里.用的是sql server2000 . 
            string s = textBox1.Text.Trim();//用户名
            string p = textBox2.Text.Trim();//密码
            string p2 = textBox3.Text.Trim();//确认密码
            string sql = "select name from name where name='" + s + "'";
            string sql1 = "insert into name values('"+s+"', '"+p+"')";
            SqlConnection cn = new SqlConnection("server=.;uid=sa;pwd=sa;database=My_user");
            SqlCommand cmd = new SqlCommand(sql, cn);
            SqlCommand cmd1 = new SqlCommand(sql1, cn);
            cn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            
            if (dr.Read())
            {
                MessageBox.Show("用户已存在");
            }
            else if (p != p2)
            {
                MessageBox.Show("确认密码错误");
            }
            else
            {
                MessageBox.Show("注册成功");
                cmd1.ExecuteNonQuery();
            }
            dr.Close();
            cn.Close();
再我最后点注册的时候会先显示注册成功,然后跳出错误.
请问问题出在哪.

解决方案 »

  1.   

    跟踪sql1的值,然后拿到sql查询分析器中直接执行看看
      

  2.   

    把sql语句合成一个 用一个cmd
      

  3.   

    既然是注册既然是插入当然是 cmd.ExecuteNonQuery();怎么会是cmd.ExecuteReader();
      

  4.   

    sql1的值直接在查询分析器里输入结果是添加了这条记录.
    不知道问题出在哪啊
      

  5.   

    MessageBox.Show("注册成功");
    cmd1.ExecuteNonQuery();次序都不对执行都没执行先告诉人家注册成功了实际上cmd1肯定错了所以先弹出注册成功,然后报错两句肯定要换下位置
      

  6.   

    高歌,我是先拿用户名去数据库里找.
    SqlDataReader dr = cmd.ExecuteReader();
                
                if (dr.Read())
    这样写对不对啊?
      

  7.   

    SqlConnection cn = new SqlConnection("server=.;uid=sa;pwd=sa;database=My_user");
    SqlCommand cmd = new SqlCommand(sql, cn);
    SqlCommand cmd1 = new SqlCommand(sql1, cn);
    cn.Open();
    SqlDataReader dr = cmd.ExecuteReader();bool IsExists=false;
    while(dr.Read())
    {
      IsExists=true;
    }
    dr.close();
    if (IsExists)
    {
           MessageBox.Show("用户已存在");
    }
    else
    {
           if (p != p2)
           {
                  MessageBox.Show("确认密码错误");
           }
            else
            {
                  cmd1.ExecuteNonQuery();               MessageBox.Show("注册成功");
             }
    }
    cn.Close();
      

  8.   

    你这里两个逻辑,其实用存储过程最好如果不用存储过程的话string s = textBox1.Text.Trim();//用户名
    string p = textBox2.Text.Trim();//密码
    string p2 = textBox3.Text.Trim();//确认密码
    string sql = "select name from name where name='" + s + "'";
    SqlConnection cn = new SqlConnection("server=.;uid=sa;pwd=sa;database=My_user");
    SqlCommand cmd = new SqlCommand(sql, cn);
    bool flag = false;
    cn.Open();
    SqlDataReader dr = cmd.ExecuteReader();
     if (dr.Read())
     {
    MessageBox.Show("用户已存在");
    flag = true;
    }
    dr.Close();
    cn.Close();if(flag == true)
    {
    sql = "insert into name values('"+s+"', '"+p+"')";
    cmd = new SqlCommand(sql, cn);
    cn.Open();
    cmd.ExecuteNonQuery();
    cn.Close();
    MessageBox.Show("注册成功");
    }
      

  9.   

    还有建议最好不要用name这样敏感的字来做表名和字段名
      

  10.   

    我把sql闪了 这次没有去输入库里找.直接用了一个cmd1 程序对了.
    不能用2个cmd的?
      

  11.   

    插入语句有错
    string sql1 = "insert into name values('"+s+"', '"+p+"')";
    string sql1 = "insert into name('表里的用户字段','表里的密码字段') values('"+s+"', '"+p+"')";另外你的判断有问题,从下面开始说
     else if (p != p2)
                {
                    MessageBox.Show("确认密码错误");
                }
                else
                {
                    MessageBox.Show("注册成功");
                    cmd1.ExecuteNonQuery();
                }如果两次密码都一样了,直接就到注册成功这,但这时你并没执行cmd1.ExecuteNonQuery(),怎么会知道是成功还是失败?
    判断是否成功失败你得先插入,通过返回值判断成功了还是失败了
    try
    {
        if(Convert.ToInt32(cmd1.ExecuteNonQuery())>0)
        {
          MessageBox.Show("注册成功");
        }
        else
        {
         MessageBox.Show("注册失败");
        }
    }
    catch(Exception Ex)
    {
       MessageBox.Show(Ex.ToString()); 
    }
      

  12.   

    string s = textBox1.Text.Trim();//用户名
                string p = textBox2.Text.Trim();//密码
                string p2 = textBox3.Text.Trim();//确认密码
                string sql = "select name from name where name='" + s + "'";
                string sql1 = "insert into name values('"+s+"', '"+p+"')";
    SqlConnection cn = new SqlConnection("server=.;uid=sa;pwd=sa;database=My_user");
    SqlCommand cmd = new SqlCommand(sql, cn);
    SqlCommand cmd1 = new SqlCommand(sql1, cn);
    cn.Open();
    SqlDataReader dr = cmd.ExecuteReader();bool IsExists=false;
    while(dr.Read())
    {
      IsExists=true;
    }
    dr.close();
    if (IsExists)
    {
           MessageBox.Show("用户已存在");
    }
    else
    {
           if (p != p2)
           {
                  MessageBox.Show("确认密码错误");
           }
            else
            {
                  cmd1.ExecuteNonQuery();               MessageBox.Show("注册成功");
             }
    }
    cn.Close();