老兄,要注意你在SQL Server 中表字段的长度(以一个英文字符为1个长度),在检查一下你所提供的值的长度(一个中文字符为2个长度),99.99%的原因就在这里。
这样的情况实在常见!!!!

解决方案 »

  1.   

    最好使用参数的形式来写SQL语句,象你那样++++很难调试而且容易出错。
      

  2.   

    我试过只加username,password,email三个是可以的
    而在数据库中,其他的定义都是用的varchar 长度为50。会出现什么问题
      

  3.   

    to webdiyer
    参数怎么用?
    Thank you!!!
      

  4.   

    SqlCommand cmd=new SqlCommand("insert into user(name,passwd) values(@name,@passwd)",mycon);
    cmd.Parameters.Add("@name",namebox.Text.Trim());
    cmd.Parameters.Add("@passwd",pwbox.Text.Trim());
    .....
      

  5.   

    用response.write把你的sql语句输出看看,估计是你要执行的sql语句的有问题
      

  6.   

    行122:"values('"
    +username.Text+"','"+password.Value+"','"+sex.Value+"','"+mail.Value+"','"+ques.Value+"','"+an.Value+"')"; 是不是行122那里少了个括号???
      

  7.   

    不好意思,没看完。你把执行过程中得到的sql语句显示出来看看,估计里面有转义字符等;
    试试:string sql=@"insert into user_login(username,password,sex,email,passques,passan)"+
    "values('"+username.Text+"','"+password.Value+"','"+sex.Value+"','"+mail.Value+"','"+ques.Value+"','"+an.Value+"')";
      

  8.   

    你最好用这种做法
    SqlCommand Comm=New SqlCommand(SqlStyr,Conn)
    Comm.Parameters.Add("@AA",SqlDbType.VarChar,12);
    Comm.Parameters["@AA"].Value=TextBox1.Text.Trim();
    ....
    ...
    其中 SqlDbType.VarChar,后的12吆喝你数据库中的长度一样